@Component
y pidiéndole Spring que escanee nuestros paquetes buscando esta anotación.Cuando me refiero a la anotación
@Component
quiero referirme a ella o cualquiera de sus especializaciones como se puede ver en la siguiente figura.Lo importante de ellas es que estas anotaciones permiten su autodetección y van a ser una forma muy fácil de añadir beans a nuestro contenedor de dependencias.
Estás anotaciones se usan a nivel de tipo y marcarán una clase para ser usada como definición de un bean de ese tipo.
En nuestro ejemplo la usamos sobre nuestra clase
Test
:import org.springframework.stereotype.Component;
@Component
public class Test {
...
}
Si sólo marcamos un tipo con @Component
no servirá de nada si no escaneamos el paquete que la contiene en su búsqueda. Por defecto las anotaciones y el escaneo de componentes están desactivados en Spring así que tendremos que configurar nuestra aplicación Spring para activarlo. Esto se hace con un fichero de configuración de la misma forma que usamos para crearnos el bean de tipo Test
.Para ello creamos un nuevo fichero de configuración al que llamaremos
config-scan.xml
y que contendrá el siguiente código:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="es.lanyu"/>
</beans>
Hay que fijarse en el paquete base que estamos declarando (en este caso base-package="es.lanyu"
). Con esto le decimos a Spring que empiece a buscar anotaciones del tipo @Componente
en el paquete base y todos los que están incluidos en él.Para añadir esta configuración a nuestra aplicación modificamos la línea que creaba nuestro contenedor para que lea este fichero de configuración en vez del anterior (que tenía el nombre
config.xml
)ConfigurableApplicationContext context =
new ClassPathXmlApplicationContext(
new String[]{"config-scan.xml"});
Ejecutándo ahora veremos que nos está creando un objeto de tipo Test
con el valor por defecto en vez del valor que le habíamos puesto en nuestro fichero config.xml
Puedes encontrar el código hasta aquí en su repositorio de GitHub y ver el vídeo del webinar en este momento.
En la siguiente entrada vamos a ver qué pasa si definimos un bean del mismo tipo de dos formas distintas.
No hay comentarios:
Publicar un comentario