Spring @Autowired @Lazy

Я использую аннотации Spring и хочу использовать ленивую инициализацию.

Я столкнулся с проблемой: когда я хочу импортировать bean-компонент из другого класса, я вынужден использовать @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);

    }

}
9
задан skaffman 14 March 2012 в 11:17
поделиться