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

转载 https://blog.csdn.net/buyaoshuohua1/article/details/99223071

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

第一点:

在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。因为value 属性需要一个正确并且存在的值。如果配置文件出错,或者没被加载,整个dataSource 就不存在,那么sqlSessionFactory 也是错误的,不存在的值, value值就不存在,不会在这个地方抛出异常;但是使用ref 属性,就会出现,不管这个引入的值对不对,都会被使用。但实际会因为这个值不存在,导致异常。

posted @   小胡0602  阅读(160)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示