MapperScannerConfigurer不 property-placeholder

关于org.mybatis.spring.mapper.MapperScannerConfigurer不支持 property-placeholder 参考了http://www.oschina.net/question/188964_32305,才解决了本身的问题。java


先注释红色部分,我是以前写的。然而就会产生错误,说找不到${driverClassName}spring

java.lang.ClassNotFoundException: ${driverClassName}sql

后面搜索一番,说:session

“在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,可能会致使PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}这样之类的表达式,将没法 获取到properties文件里的内容。 致使这一缘由是由于,MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置 sqlSessionFactory的话,会致使提早初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替 换定义中的变量,致使把表达式看成字符串复制了。 但若是不设置sqlSessionFactory 属性的话,就必需要保证sessionFactory在spring中名称必定要是sqlSessionFactory ,不然就没法自动注入。又或者直接定义 MapperFactoryBean ,再或者放弃自动代理接口方式。
mybatis

而后在spring 3.1.1以上版本是能够这样的。”app

“改用sqlSessionFactoryBeanName注入就没有问题(不要使用sqlSessionFactory属性注入,使用 sqlSessionFactoryBeanName注入),由于这时不会当即初始化sqlSessionFactory,传入的只是名字,非bean, 因此不会引起提早初始化问题。”.net

因此个人问题解决了,只要注释红色圈圈的上面一行而且解开红色框所在行的注释就好了。  其中注意的是属性名:sqlSessionFactoryBeanName不是随意来的。代理

相关文章
相关标签/搜索