Я использую аннотации Spring и хочу использовать отложенную инициализацию.
Я сталкиваюсь с проблемой, что когда я хочу импортировать бин из другого класса, я вынужден использовать @Autowired
, которыйпохоже, не использует ленивый init.Есть ли способ принудительно вызвать ленивое поведение инициализации?
В этом примере я не хочу, чтобы когда-либо печаталось «Загрузка родительского компонента», поскольку я загружаю только childBean
, который не зависит от 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);
}
}