1. Introducción
Antes de Spring 3.0, XML era la única forma de definir y configurar beans. Spring 3.0 introdujo JavaConfig , permitiéndonos configurar beans usando clases de Java. Sin embargo, los archivos de configuración XML todavía se utilizan en la actualidad.
En este tutorial, discutiremos cómo integrar configuraciones XML en Spring Boot .
2. La anotación @ImportResource
La anotación @ImportResource nos permite importar uno o más recursos que contienen definiciones de bean.
Digamos que tenemos un archivo beans.xml con la definición de un bean:
Para usarlo en una aplicación Spring Boot, podemos usar la anotación @ImportResource , indicándole dónde encontrar el archivo de configuración:
@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); } }
En este caso, la instancia de Pojo se inyectará con el bean definido en beans.xml .
3. Acceso a propiedades en configuraciones XML
¿Qué pasa con el uso de propiedades en archivos de configuración XML? Digamos que queremos usar una propiedad declarada en nuestro archivo application.properties :
sample=string loaded from properties!
La actualización de la let Pojo definición, en beans.xml , que incluye la muestra de la propiedad:
A continuación, verifiquemos si la propiedad está incluida correctamente:
@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); } }
Desafortunadamente, esta prueba fallará porque, de forma predeterminada, el archivo de configuración XML no puede resolver marcadores de posición . Sin embargo, podemos resolver esto incluyendo la anotación @EnableAutoConfiguration :
@Configuration @EnableAutoConfiguration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { // ... }
Esta anotación habilita la configuración automática e intenta configurar beans.
4. Enfoque recomendado
Podemos seguir usando archivos de configuración XML. Pero también podemos considerar mover toda la configuración a JavaConfig por un par de razones. Primero, la configuración de los beans en Java es segura para los tipos , por lo que detectaremos los errores de tipo en el momento de la compilación. Además, la configuración XML puede crecer bastante , lo que dificulta su mantenimiento.
5. Conclusión
En este artículo, vimos cómo usar archivos de configuración XML para definir nuestros beans en una aplicación Spring Boot. Como siempre, el código fuente del ejemplo que usamos está disponible en GitHub.