Spring-mybatis整合 获取properties 创建SQLSessionFactory失败

代码:












测试类:

输出结果:


如果想加载properties 配置文件的方式读取 dataSource Bean:


这时,你会发现没有问题;会得到数据库连接,但是加上SQLSessionFactory的话就会报错:


报错信息:


提示很明显:创建初始化的SQLSessionFactory失败,因为dataSource加载失败!!什么原因呢?

找了好久终于发现:

MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替换定义中的变量,导致把表达式当作字符串复制了,解决的办法如下:

 

方法一:

修改

原理:使用sqlSessionFactoryBeanName注入,不会立即初始化sqlSessionFactory, 所以不会引发提前初始化问题。

 

方法二:

直接删掉

注意:在没有配置这一行时,必须配置一个以sqlSessionFactory命名的org.mybatis.spring.SqlSessionFactoryBean。

你可能感兴趣的:(myBatis)