Spring は、FactoryBean
Bean の重要な初期化を可能にするインターフェースを提供します。このフレームワークはファクトリー Bean の多くの実装を提供します。また、Spring の XML 構成を使用する場合、ファクトリー Bean は簡単に使用できます。
しかし、Spring 3.0 では、ファクトリー Bean をアノテーション・ベースの構成 (旧称 JavaConfig) で使用する満足のいく方法を見つけることができません。
明らかに、次のように、ファクトリ Bean を手動でインスタンス化し、必要なプロパティを自分で設定できます。
@Configuration
public class AppConfig {
...
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
factory.setDataSource(dataSource());
factory.setAnotherProperty(anotherProperty());
return factory.getObject();
}
ただし、、、、またはFactoryBean
などの Spring 固有のコールバック インターフェイスが実装されている場合、これは失敗します。また、FactoryBean を検査し、それが実装するコールバック インターフェイスを見つけてから、などを呼び出してこの機能を自分で実装する必要があります。InitializingBean
ApplicationContextAware
BeanClassLoaderAware
@PostConstruct
setApplicationContext
afterPropertiesSet()
これは私にはぎこちなく、前から後ろに見えます。アプリケーション開発者は、IOC コンテナーのコールバックを実装する必要はありません。
Spring Annotation 構成から FactoryBeans を使用するためのより良い解決策を知っている人はいますか?