Bean definiti da XML in Spring Boot

1. Introduzione

Prima della Spring 3.0, XML era l'unico modo per definire e configurare i bean. La primavera 3.0 ha introdotto JavaConfig , permettendoci di configurare i bean utilizzando le classi Java. Tuttavia, i file di configurazione XML sono ancora utilizzati oggi.

In questo tutorial, discuteremo come integrare le configurazioni XML in Spring Boot .

2. L' annotazione @ImportResource

L' annotazione @ImportResource ci consente di importare una o più risorse contenenti definizioni di bean.

Supponiamo di avere un file bean.xml con la definizione di bean:

Per usarlo in un'applicazione Spring Boot, possiamo usare l' annotazione @ImportResource , dicendogli dove trovare il file di configurazione:

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

In questo caso, l' istanza Pojo verrà iniettata con il bean definito in bean.xml .

3. Accesso alle proprietà nelle configurazioni XML

Che dire dell'utilizzo delle proprietà nei file di configurazione XML? Supponiamo di voler utilizzare una proprietà dichiarata nel nostro file application.properties :

sample=string loaded from properties!

Aggiorniamo la definizione Pojo , in bean.xml , per includere la proprietà sample :

Successivamente, verifichiamo se la proprietà è inclusa correttamente:

@RunWith(SpringRunner.class) @SpringBootTest(classes = SpringBootXmlApplication.class) public class SpringBootXmlApplicationIntegrationTest { @Autowired private Pojo pojo; @Value("${sample}") private String sample; @Test public void whenCallingGetter_thenPrintingProperty() { assertThat(pojo.getField()) .isNotBlank() .isEqualTo(sample); } }

Sfortunatamente, questo test fallirà perché, per impostazione predefinita, il file di configurazione XML non può risolvere i segnaposto . Tuttavia, possiamo risolvere questo problema includendo l' annotazione @EnableAutoConfiguration :

@Configuration @EnableAutoConfiguration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { // ... }

Questa annotazione abilita la configurazione automatica e tenta di configurare i bean.

4. Approccio consigliato

Possiamo continuare a utilizzare i file di configurazione XML. Ma possiamo anche considerare di spostare tutta la configurazione in JavaConfig per un paio di motivi. Innanzitutto, la configurazione dei bean in Java è indipendente dai tipi , quindi rileveremo gli errori di tipo in fase di compilazione. Inoltre, la configurazione XML può diventare abbastanza grande , rendendo difficile la manutenzione.

5. conclusione

In questo articolo, abbiamo visto come utilizzare i file di configurazione XML per definire i nostri bean in un'applicazione Spring Boot. Come sempre, il codice sorgente dell'esempio che abbiamo usato è disponibile su GitHub.