プロパティ ファイルの値に基づいて DAO の実装を切り替えられるようにしたいアプリケーションがあります。Spring FactoryBean インターフェースは、プロパティ値に基づいて切り替える作業を内部で実行できる FactoryBean を介して DAO を提供できるという点でうまく機能するように見えます。
ただし、このspringsource ブログ投稿の最後の段落では、次の警告について言及しています。
ここでの重要なポイントの 1 つは、ファクトリ化されたオブジェクト自体ではなく、Spring コンテナーに存在し、ライフサイクル フックとコンテナー サービスを享受するのは FactoryBean であるということです。返されたインスタンスは一時的です。Spring は、 getObject() から返されたものについて何も認識せず、ライフサイクル フックやその他のものを実行しようとしません。
私の DAO オブジェクトには、Spring アノテーション@Repository
と@Transactional
. 上記の段落に照らして、FactoryBean を介して DAO 実装を返す場合、これらの注釈は無視されますか? もしそうなら、Spring が FactoryBean によって返された Bean を管理していることを確認する良い方法は何ですか?
編集:ほとんどの人が問題に対する代替構成ソリューションを提供しているようです。私はこれらの提案を受け入れていますが (そして、それらが良い場合は賛成します)、私の質問は実際には適切な FactoryBean の使用法に関係しており、それらの質問に基づいて正しい回答をマークします。