I'm using Spring annotations and I want to use lazy initialization. I'm running into a problem that when I want to import a bean from another class I am forced to use @Autowired which does not seem to use lazy init. Is there anyway to force this lazy init behaviour?
In this example I do not want to see "Loading parent bean" ever being printed as I am only loading childBean which has no dependencies on lazyParent.
Code:@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); } }


Reply With Quote
