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.


$config[zx-auto] not found$config[zx-overlay] not found