AnnotationSessionFactoryBean

AnnotationSessionFactoryBean

我正在基于注释的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。

10-06 05:45