我正在使用 Spring MVC 5.0.8 和 Hibernate 5.2.11 开发 REST api
我创建了AppConfig
类,在其中创建了返回类型为LocalSessionFactoryBean
的getSessionFactory()
方法
@Bean
public LocalSessionFactoryBean getSessionFactory() {
LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
factoryBean.setDataSource(dataSource());
factoryBean.setPackagesToScan("saptarsi.auditdb.model");
factoryBean.setHibernateProperties(hibernateProperties());
return factoryBean;
}
在 DaoImpl
类中,我 Autowiring 了 SessionFactory
@Repository
public class LOcaldbDaoImpl implements LocaldbDao {
@Autowired
private SessionFactory sessionFactory;
private Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
@Override
public void getAllApiDetails(HttpRequestEntity<ApiDetailsFilterDto> requestEntityDto) {
}
}
一切正常
但我想知道 SessionFactory 是如何 Autowiring 的。
因为我没有返回factoryBean.getObject()
,它负责返回SessionFactory
类型对象。
并且@Autowire
将在Bean工厂中查找SessionFactory
类型。
那么 Autowiring 是如何发生的?
最佳答案
因为在初始化LocalSessionFactoryBean
之后,调用了buildSessionFactory
方法。 Link to calling 。
protected SessionFactory buildSessionFactory(LocalSessionFactoryBuilder sfb) {
return (this.bootstrapExecutor != null ? sfb.buildSessionFactory(this.bootstrapExecutor) :
sfb.buildSessionFactory());
}
之后,SessionFactory bean 将位于 ApplicationContext 中。
关于java - Spring 5 + hibernate 5 : How SessionFactory is getting Autowired with LocalSessionFactoryBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58069083/