XML-definerede bønner i Spring Boot

1. Introduktion

Før Spring 3.0 var XML den eneste måde at definere og konfigurere bønner på. Spring 3.0 introduceret JavaConfig, der giver os mulighed for at konfigurere bønner ved hjælp af Java-klasser. XML-konfigurationsfiler bruges dog stadig i dag.

I denne vejledning diskuterer vi hvordan man integrerer XML-konfigurationer i Spring Boot.

2. Den @ImportResource Kommentar

Det @ImportResource annotation giver os mulighed for at importere en eller flere ressourcer, der indeholder definitioner af bønner.

Lad os sige, at vi har en bønner.xml fil med definitionen af ​​en bønne:

For at bruge det i en Spring Boot-applikation kan vi brug @ImportResource kommentar, fortæller det, hvor konfigurationsfilen skal findes:

@Configuration @ImportResource ("classpath: beans.xml") offentlig klasse SpringBootXmlApplication implementerer CommandLineRunner {@Autowired privat Pojo pojo; public static void main (String [] args) {SpringApplication.run (SpringBootXmlApplication.class, args); }}

I dette tilfælde er Pojo eksempel injiceres med bønnen defineret i bønner.xml.

3. Adgang til egenskaber i XML-konfigurationer

Hvad med at bruge egenskaber i XML-konfigurationsfiler? Lad os sige, at vi vil bruge en ejendom, der er angivet i vores application.properties fil:

prøve = streng indlæst fra egenskaber!

Lad os opdatere Pojo definition, i bønner.xml, at inkludere prøve ejendom:

Lad os derefter kontrollere, om ejendommen er korrekt inkluderet:

@RunWith (SpringRunner.class) @SpringBootTest (klasser = SpringBootXmlApplication.class) offentlig klasse SpringBootXmlApplicationIntegrationTest {@Autowired privat Pojo pojo; @Value ("$ {sample}") privat strengeksempel; @Test offentligt ugyldigt nårCallingGetter_thenPrintingProperty () {assertThat (pojo.getField ()) .isNotBlank () .isEqualTo (sample); }}

Desværre vil denne test mislykkes, fordi XML-konfigurationsfilen kan som standard ikke løse pladsholdere. Vi kan dog løse dette ved at inkludere @EnableAutoConfiguration kommentar:

@Configuration @EnableAutoConfiguration @ImportResource ("classpath: beans.xml") offentlig klasse SpringBootXmlApplication implementerer CommandLineRunner {// ...}

Denne kommentar muliggør automatisk konfiguration og forsøg på at konfigurere bønner.

4. Anbefalet tilgang

Vi kan fortsætte med at bruge XML-konfigurationsfiler. Men vi kan også overveje at flytte al konfiguration til JavaConfig af et par grunde. Først, konfiguration af bønner i Java er typesikker, så vi fanger typefejl på kompileringstidspunktet. Også, XML-konfiguration kan vokse ganske stor, hvilket gør det vanskeligt at vedligeholde.

5. Konklusion

I denne artikel så vi, hvordan vi bruger XML-konfigurationsfiler til at definere vores bønner i en Spring Boot-applikation. Som altid er kildekoden til det eksempel, vi brugte, tilgængelig på GitHub.


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