Para ello vamos a usar tres cosas:
- La primera ya la hemos visto: el escaneo de componentes. Nos vamos a crear una clase de configuración llamada
JavaConfig
(el nombre no tiene porqué ser este y podemos tener varias clases de configuración). Esta clase estará el en paquetees.lanyu.datosdeportivosapi
para que sea escaneada por Spring - La segunda hemos visto a un hermano suyo: marcar la clase para ser autodetectada. En este caso en vez de usar la anotación
@Component
usamos la anotación@Configuration
, pero el concepto es el mismo. - La tercera es otra anotación que sirve para indicar que el objeto devuelto en un método es un bean que debe ser cargado en el contenedor:
@Bean
. Además voy a añadir el nombre"config"
a esta anotación para desambiguar el bean. Se hace igual que hicimos con@Component
.
package es.lanyu.datosdeportivosapi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JavaConfig {
@Bean(name="config")
public Test miTest() {
Test test = new Test() {
int llamadas = 0;
@Override
public void init() {
System.out.printf("Llamado %s veces", ++llamadas);
System.out.println();
}
};
test.init();
return test;
}
}
NOTA: también puede ponerse simplemente
@Bean("config")
He sobrescrito el método
init()
para que quede claro que por defecto los beans son singleton y que se crea un objeto que es cargado en nuestro contenedor y se devuelve siempre el mismo, no se genera uno nuevo usando su código para generarlo. Así cuando recuperamos el bean con nombre "config"
y volvemos a llamar al método init()
se ve claramente que es la segunda vez que se le llama, lo que demuestra que me está devolviendo el mismo objeto que se creó:test = context.getBean("config", Test.class);
test.init();}
La salida por consola es:
...
Llamado 1 veces
...
Llamado 2 veces
...
Llamado 1 veces
...
Llamado 2 veces
...
Puedes encontrar el código hasta este punto en su repositorio y ver el video del webinar.
Lo siguiente que haremos será pasar a usar Spring Boot y veremos cómo se hace todo lo hecho hasta ahora usándolo.
No hay comentarios:
Publicar un comentario