9
私はSpringアノテーションを使用しています。私は遅延初期化を使用したいと思います。Spring @Autowired @Lazy
別のクラスからBeanをインポートしたいときに、私は@Autowired
を使用しなければならないという問題に遭遇しています。これは遅延初期化を使用していないようです。この怠惰なinitの動作を強制する余地はありますか?
この例では、lazyParent
に依存しないchildBean
しかロードしていないので、「ロード先の親Bean」は表示されません。
@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);
}
}
私はちょうど 'Void'のこの恐ろしいビジョンを持っていました。 TDWTFのための1つ私は考えます... –
ボイドビーンそれらをすべて支配する。 ボイドビーンを見つけてください。 ボイドビーンをすべて持って来て、 と依存性注入にバインドしてください。 –
@skaffmanなぜ私は豆としてストリングを定義してはいけないのですか? – wings