XML Defined Beans in Spring Boot
1. Introduksjon
Før våren 3.0 var XML den eneste måten å definere og konfigurere bønner på. Våren 3.0 introdusert JavaConfig, slik at vi kan konfigurere bønner ved hjelp av Java-klasser. Imidlertid brukes XML-konfigurasjonsfiler fortsatt i dag.
I denne opplæringen vil vi diskutere hvordan du integrerer XML-konfigurasjoner i Spring Boot.
2. Den @ImportResource Kommentar
De @ImportResource kommentar lar oss importere en eller flere ressurser som inneholder bønnedefinisjoner.
La oss si at vi har en bønner.xml fil med definisjonen av en bønne:
For å bruke den i en Spring Boot-applikasjon, kan vi bruke @ImportResource kommentar, og forteller den hvor du finner konfigurasjonsfilen:
@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 tilfellet Pojo forekomst vil bli injisert med bønnen definert i bønner.xml.
3. Få tilgang til egenskaper i XML-konfigurasjoner
Hva med å bruke egenskaper i XML-konfigurasjonsfiler? La oss si at vi vil bruke en eiendom erklært i vår application.properties fil:
sample = streng lastet fra egenskaper!
La oss oppdatere Pojo definisjon, i bønner.xml, for å inkludere prøve eiendom:
La oss deretter kontrollere om eiendommen er riktig inkludert:
@RunWith (SpringRunner.class) @SpringBootTest (klasser = SpringBootXmlApplication.class) offentlig klasse SpringBootXmlApplicationIntegrationTest {@Autowired private Pojo pojo; @Value ("$ {sample}") privat strengeksempel; @Test offentlig ugyldig nårCallingGetter_thenPrintingProperty () {assertThat (pojo.getField ()) .isNotBlank () .isEqualTo (sample); }}
Dessverre vil denne testen mislykkes fordi XML-konfigurasjonsfilen kan som standard ikke løse plassholdere. Vi kan imidlertid løse dette ved å inkludere @EnableAutoConfiguration kommentar:
@Configuration @EnableAutoConfiguration @ ImportResource ("classpath: beans.xml") offentlig klasse SpringBootXmlApplication implementerer CommandLineRunner {// ...}
Denne kommentaren muliggjør automatisk konfigurering og forsøk på å konfigurere bønner.
4. Anbefalt tilnærming
Vi kan fortsette å bruke XML-konfigurasjonsfiler. Men vi kan også vurdere å flytte all konfigurasjon til JavaConfig av et par grunner. Først, å konfigurere bønnene i Java er typesikkert, så vi fanger typefeil på kompileringstidspunktet. Også, XML-konfigurasjon kan bli ganske stor, noe som gjør det vanskelig å vedlikeholde.
5. Konklusjon
I denne artikkelen så vi hvordan vi bruker XML-konfigurasjonsfiler til å definere våre bønner i en Spring Boot-applikasjon. Som alltid er kildekoden til eksemplet vi brukte tilgjengelig på GitHub.