Estoy usando anotaciones de Spring y quiero utilizar la inicialización perezosa.Spring @Autowired @ Lazy
Me está surgiendo el problema de que cuando quiero importar un bean de otra clase me veo forzado a usar @Autowired
que no parece usar init lazy. ¿Hay alguna forma de forzar este comportamiento de inicio perezoso?
En este ejemplo, no deseo que se imprima "Cargando pariente principal" ya que solo estoy cargando childBean
que no tiene dependencias en lazyParent
.
@Configuration
public class ConfigParent {
@Bean
@Lazy
public Long lazyParent(){
System.out.println("Loading parent bean");
return 123L;
}
}
@Configuration
@Import(ConfigParent.class)
public class ConfigChild {
private @Autowired Long lazyParent;
@Bean
public Double childBean() {
System.out.println("loading child bean");
return 1.0;
}
@Bean
@Lazy
public String lazyBean() {
return lazyParent+"!";
}
}
public class ConfigTester {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigChild.class);
Double childBean=ctx.getBean(Double.class);
System.out.println(childBean);
}
}
Acabo de tener esta visión horrible de un frijol 'Void'. Uno para TDWTF, creo ... –
Void Bean para gobernarlos a todos. Void Bean para encontrarlos. Void Bean para traerlos a todos, y en Inyección de Dependencia Enlazarlos –
@skaffman ¿Puedo preguntar por qué no debería definir Cadenas como frijoles? – wings