XML-gedefinieerde bonen in Spring Boot
1. Inleiding
Vóór Spring 3.0 was XML de enige manier om bonen te definiëren en configureren. Spring 3.0 geïntroduceerd JavaConfig, waardoor we bonen kunnen configureren met Java-klassen. XML-configuratiebestanden worden echter nog steeds gebruikt.
In deze tutorial bespreken we hoe u XML-configuraties integreert in Spring Boot.
2. Het @ImportResource Annotatie
De @ImportResource annotatie stelt ons in staat om een of meer bronnen te importeren die bean-definities bevatten.
Laten we zeggen dat we een bonen.xml bestand met de definitie van een boon:
Om het in een Spring Boot-applicatie te gebruiken, kunnen we gebruik de @ImportResource annotatie, vertellend waar het configuratiebestand te vinden is:
@Configuration @ImportResource ("classpath: beans.xml") openbare klasse SpringBootXmlApplication implementeert CommandLineRunner {@Autowired private Pojo pojo; openbare statische leegte hoofd (String [] args) {SpringApplication.run (SpringBootXmlApplication.class, args); }}
In dit geval is het Pojo instantie wordt geïnjecteerd met de boon die is gedefinieerd in bonen.xml.
3. Toegang tot eigenschappen in XML-configuraties
Hoe zit het met het gebruik van eigenschappen in XML-configuratiebestanden? Laten we zeggen dat we een eigenschap willen gebruiken die is opgegeven in onze application.properties het dossier:
sample = string geladen vanuit eigenschappen!
Laten we het Pojo definitie, in bonen.xml, om de monster eigendom:
Laten we vervolgens controleren of de eigenschap correct is opgenomen:
@RunWith (SpringRunner.class) @SpringBootTest (klassen = SpringBootXmlApplication.class) openbare klasse SpringBootXmlApplicationIntegrationTest {@Autowired privé Pojo-pojo; @Value ("$ {sample}") privé String-voorbeeld; @Test openbare leegte whenCallingGetter_thenPrintingProperty () {assertThat (pojo.getField ()) .isNotBlank () .isEqualTo (voorbeeld); }}
Helaas zal deze test mislukken omdat, standaard kan het XML-configuratiebestand geen tijdelijke aanduidingen omzetten. We kunnen dit echter oplossen door de @EnableAutoConfiguration annotatie:
@Configuration @EnableAutoConfiguration @ImportResource ("classpath: beans.xml") openbare klasse SpringBootXmlApplication implementeert CommandLineRunner {// ...}
Deze annotatie maakt automatische configuratie mogelijk en pogingen om bonen te configureren.
4. Aanbevolen aanpak
We kunnen XML-configuratiebestanden blijven gebruiken. Maar we kunnen ook overwegen om alle configuratie naar JavaConfig om een aantal redenen. Eerste, het configureren van de bonen in Java is type-safe, dus we zullen typefouten opvangen tijdens het compileren. Ook, XML-configuratie kan behoorlijk groot worden, waardoor het moeilijk te onderhouden is.
5. Conclusie
In dit artikel hebben we gezien hoe we XML-configuratiebestanden kunnen gebruiken om onze bonen in een Spring Boot-toepassing te definiëren. Zoals altijd is de broncode van het voorbeeld dat we hebben gebruikt beschikbaar op GitHub.