我正在基于注释的Spring配置上工作,我也想使用Hibernate。我有一个AnnotationSessionFactoryBean:
@Bean
public AnnotationSessionFactoryBean getSessionFactory() {
AnnotationSessionFactoryBean annotationSessionFactoryBean = new AnnotationSessionFactoryBean();
annotationSessionFactoryBean.setDataSource(getDataSource());
annotationSessionFactoryBean.setHibernateProperties(getHibernateProperties());
annotationSessionFactoryBean.setPackagesToScan("com.mobiusinversion.web");
return annotationSessionFactoryBean;
}
但是现在在我的代码中,如何在SessionFactory中自动装配,如下所示:
@Transactional
@Repository
public class UserRepository {
@Autowired
private SessionFactory sessionFactory;
}
最佳答案
AnnotationSessionFactoryBean
既是InitializingBean
又是FactoryBean
。这些是Spring作为bean生命周期的一部分处理的特殊接口。 InitializingBean
将提供afterProperties
设置以初始化bean,而FactoryBean
将提供getObject
用于检索bean。然后将该bean添加到上下文中。AnnotationSessionFactoryBean
生成一个SessionFactory
bean,所以,是的,您要做的就是自动装配它
@Autowired
private SessionFactory sessionFactory;
在文档中对此进行了全部解释:
InitializingBean
FactoryBean
您还应该阅读javadoc。