Beans définis par XML dans Spring Boot

1. Introduction

Avant Spring 3.0, XML était le seul moyen de définir et de configurer des beans. Spring 3.0 a introduit JavaConfig , nous permettant de configurer des beans à l'aide de classes Java. Cependant, les fichiers de configuration XML sont encore utilisés aujourd'hui.

Dans ce didacticiel, nous verrons comment intégrer des configurations XML dans Spring Boot .

2. L' annotation @ImportResource

L' annotation @ImportResource nous permet d'importer une ou plusieurs ressources contenant des définitions de bean.

Disons que nous avons un fichier beans.xml avec la définition d'un bean:

Pour l'utiliser dans une application Spring Boot, nous pouvons utiliser l' annotation @ImportResource , lui indiquant où trouver le fichier de configuration:

@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); } }

Dans ce cas, l' instance Pojo sera injectée avec le bean défini dans beans.xml .

3. Accès aux propriétés dans les configurations XML

Qu'en est-il de l'utilisation des propriétés dans les fichiers de configuration XML? Disons que nous voulons utiliser une propriété déclarée dans notre fichier application.properties :

sample=string loaded from properties!

Mettons à jour la définition Pojo , dans beans.xml , pour inclure l' exemple de propriété:

Ensuite, vérifions si la propriété est correctement incluse:

@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); } }

Malheureusement, ce test échouera car, par défaut, le fichier de configuration XML ne peut pas résoudre les espaces réservés . Cependant, nous pouvons résoudre ce problème en incluant l' annotation @EnableAutoConfiguration :

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

Cette annotation active la configuration automatique et tente de configurer les beans.

4. Approche recommandée

Nous pouvons continuer à utiliser les fichiers de configuration XML. Mais nous pouvons également envisager de déplacer toute la configuration vers JavaConfig pour plusieurs raisons. Tout d'abord, la configuration des beans en Java est de type sécurisé , nous allons donc détecter les erreurs de type lors de la compilation. De plus, la configuration XML peut devenir assez volumineuse , ce qui la rend difficile à maintenir.

5. Conclusion

Dans cet article, nous avons vu comment utiliser des fichiers de configuration XML pour définir nos beans dans une application Spring Boot. Comme toujours, le code source de l'exemple que nous avons utilisé est disponible à l'adresse over sur GitHub.