FactoryBeans 和 Spring 3.0 中基于注释的配置
Spring提供了允许对Bean进行非平凡初始化的接口。该框架提供了许多工厂bean的实现,并且 - 当使用Spring的XML配置时 - 工厂bean易于使用。FactoryBean
但是,在Spring 3.0中,我找不到一种令人满意的方法将工厂bean与基于注释的配置(née 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();
}
但是,如果实现了任何特定于Spring的回调接口,例如,,,或,这将失败。我还需要检查FactoryBean,找出它实现的回调接口,然后通过调用等方式自己实现此功能。FactoryBean
InitializingBean
ApplicationContextAware
BeanClassLoaderAware
@PostConstruct
setApplicationContext
afterPropertiesSet()
这对我来说很尴尬和背对头:应用程序开发人员不应该实现IOC容器的回调。
有谁知道使用Spring Annotation配置的FactoryBeans的更好解决方案吗?