ApplicationContextのロード時にBean内で一度だけ(非静的)メソッドを呼び出す必要があるユースケースがあります。これにMethodInvokingFactoryBeanを使用すれば大丈夫ですか?それとも、もっと良い解決策がありますか?
ちなみに、Webアプリケーションでアプリケーションコンテキストを読み込むにはConfigContextLoaderListenerを使います。そして、Bean 'A'がインスタンス化されている場合は、methodA()を1回呼び出すだけでいいのです。
どうすればこれをうまく行うことができますか?
次のようなものを使うことができます。
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
Beanがインスタンス化されると、これは "init"メソッドを呼び出します。
他の回答で@PostConstructの提案を拡張するには、これが本当に最善の解決策です。
参照 で説明されているように、考慮すべき3つの異なるアプローチがあります。
InitializingBean
を実装してみましたか?それはまさにあなたがしていることのように聞こえます。
欠点は、BeanがSpringに対応するようになることですが、ほとんどのアプリケーションではそれほど悪くありません。
あなたはそれをするためにあなたのアプリケーションコンテキストでカスタム BeanPostProcessor をデプロイすることができます。あるいは、SpringインタフェースをBeanに実装しても構わない場合は、 InitializingBean インタフェースまたは "init-method"ディレクティブ(同じリンク)を使用できます。