私はBeanのインスタンス化の順序付けが重要な問題に遭遇しました。現在、下のBean3はDBベースのキャッシュput操作を実行し、Bean 1はProxy Bean2を使用して新しく作成されたキャッシュに対してクエリを実行します。 bean1がインスタンス化される前、つまりSpringコンテナが起動する前に、Bean3とBean 2が完全にインスタンス化されることが優先されます。これらのBeanは個別のJARSにあり、Bean1へのBean1参照はAutowiredを使用していません。代わりに、サービスロケータが参照を与えています。私たちはSpring 2.5.2を使用しており、Beanのインスタンス化にはXMLを使用していません。どんな助けにも感謝!Spring beanのインスタンス化の順序
JAR1(春プロジェクト)
@Service ("bean3") public class Bean3 implements ApplicationListener { public void onApplicationEvent() { //load data from DB and populate cache } public void getCache(){ //get data from cache }
}
@Service ("bean2") public class Bean2 { @Autowired private Bean3 bean3; private void methodA(){ bean3.getCache(); } }
JAR2(非スプリングプロジェクト)
public class Bean1{ Bean2 bean2 = SpringServiceLocator.getBean("bean2") public void methodB(){ bean2.methodA(); } }
コンストラクタベースのオートワイヤリングを使用していますか? – Scott
autowiringのためにJAR1で自動ディスカバリモードを有効にしました。 – Noosphere
Bean1をBean2に依存させる(または一連の依存関係を作成する)ことは可能でしょうか?Bean1のメソッドはいつ呼び出されますか? –