为什么在sqlSessionFactoryBeanName中要用value注入sqlSessionFactory,而不是ref?

来源:4-7 mybatis整合Spring编码

风雨同行13

2018-05-03 11:38

为什么在sqlSessionFactoryBeanName中要用value注入sqlSessionFactory,而不是ref?



写回答 关注

2回答

  • Queen丶Star
    2018-07-17 16:41:09

    因为  value 属性需要一个正确并且存在的值, ,如果配置文件出错,或者没被加载,整个dataSource 就不存在,那么sqlSessionFactory 也是 错误的,不存在的值, value值就不存在。  


    使用ref 属性,就会出现,不管这个引入的值对不对,都会被使用。但实际会因为这个值不存在,导致异常

  • tequila77
    2018-05-05 18:56:24

    在mybatis-spring 1.1.0以前,是通过<property name="sqlSessionFactory" ref="sqlSessionFactory"/>将SqlSessionFactory对象注入到sqlSessionFactory,这样做可能会有一个问题,就是在初始化MyBatis时,jdbc.properties文件还没被加载进来,dataSource的属性值没有被替换,就开始构造sqlSessionFactory类,属性值就会加载失败。在1.1.0以后,MapperScannerConfigure提供了String类型的sqlSessionFactoryBeanName,这样将bean name注入到sqlSessionFactoryBeanName,这样就会等到spring初始化完成后,再构建sqlSessionFactory。

    qq_超_5...

    你没有看清楼主的问题

    2018-11-06 21:12:08

    共 1 条回复 >

Java高并发秒杀API之业务分析与DAO层

Java实现高并发秒杀API的第一门课,还等什么,赶快来加入吧

87424 学习 · 496 问题

查看课程

相似问题