java - Spring 5 + hibernate 5 : How SessionFactory is getting Autowired with LocalSessionFactoryBean

标签 java hibernate rest spring-mvc sessionfactory

我正在使用 Spring MVC 5.0.8 和 Hibernate 5.2.11 开发 REST api

我创建了AppConfig类,在其中创建了返回类型为LocalSessionFactoryBeangetSessionFactory()方法

    @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/

相关文章:

java - 在JpaRepository接口(interface)中设置@query(子查询)

java - TransactionManager read-only=true 不适用于 mysql ReplicationDriver

rest - 对于损坏的有效负载(校验和失败),最合适的 HTTP 错误代码是什么?

php - Yii2剩余保存多个模型

java - HTTP 请求对象

线程中的 Java 异常 "main"java.lang.ArrayIndexOutOfBoundsException

java - SCPSolver 与 Java nullPointerException。一个可运行的例子

java - 生成的查询中的 Hibernate SQL 错误(可能是映射错误)

java - 错误无法加载资源: the server responded with a status of 403 () en angular

java - Box2d中如何控制时间?