MapperScannerConfigurer不 property-placeholder
2015-12-23 16:45
477 查看
关于org.mybatis.spring.mapper.MapperScannerConfigurer不支持 property-placeholder 参考了http://www.oschina.net/question/188964_32305,才解决了自己的问题。
先注释红色部分,我是之前写的。然而就会产生错误,说找不到${driverClassName}
java.lang.ClassNotFoundException: ${driverClassName}
后面搜索一番,说:
“在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,可能会导致PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}这样之类的表达式,将无法 获取到properties文件里的内容。 导致这一原因是因为,MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置 sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替 换定义中的变量,导致把表达式当作字符串复制了。 但如果不设置sqlSessionFactory 属性的话,就必须要保证sessionFactory在spring中名称一定要是sqlSessionFactory ,否则就无法自动注入。又或者直接定义 MapperFactoryBean ,再或者放弃自动代理接口方式。
然后在spring 3.1.1以上版本是可以这样的。”
“改用sqlSessionFactoryBeanName注入就没有问题(不要使用sqlSessionFactory属性注入,使用 sqlSessionFactoryBeanName注入),因为这时不会立即初始化sqlSessionFactory,传入的只是名字,非bean, 所以不会引发提前初始化问题。”
所以我的问题解决了,只要注释红色圈圈的上面一行并且解开红色框所在行的注释就行了。 其中注意的是属性名:sqlSessionFactoryBeanName不是随意来的。
先注释红色部分,我是之前写的。然而就会产生错误,说找不到${driverClassName}
java.lang.ClassNotFoundException: ${driverClassName}
后面搜索一番,说:
“在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,可能会导致PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}这样之类的表达式,将无法 获取到properties文件里的内容。 导致这一原因是因为,MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置 sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替 换定义中的变量,导致把表达式当作字符串复制了。 但如果不设置sqlSessionFactory 属性的话,就必须要保证sessionFactory在spring中名称一定要是sqlSessionFactory ,否则就无法自动注入。又或者直接定义 MapperFactoryBean ,再或者放弃自动代理接口方式。
然后在spring 3.1.1以上版本是可以这样的。”
“改用sqlSessionFactoryBeanName注入就没有问题(不要使用sqlSessionFactory属性注入,使用 sqlSessionFactoryBeanName注入),因为这时不会立即初始化sqlSessionFactory,传入的只是名字,非bean, 所以不会引发提前初始化问题。”
所以我的问题解决了,只要注释红色圈圈的上面一行并且解开红色框所在行的注释就行了。 其中注意的是属性名:sqlSessionFactoryBeanName不是随意来的。
相关文章推荐
- java代码中实现android背景选择的selector-StateListDrawable的应用
- 90后女生微信销售案例:预热和成熟
- iOS开发CADisplayLink和NSTimer
- iOS 发布证书申请
- android SDK开发(五)TitleBar封装
- iOS Lable给文字添加中划线和下划线
- iOS应用的crash日志的分析基础
- iOS中nil/Nil/NULL/NSNull的区别
- Android判断用户的网络类型实例讲解(2/3/4G、wifi)
- dbappsec
- Html5判断app是否安装
- AppCompat Toolbar控件去掉阴影设置高度
- android 设计模式笔记
- android 打包签名错误
- 解决 AndroidStudio 利用百度地图API AppScode无法校验
- 微信鼠标点击显示二维码代码
- 【iOS】多线程NSOperation 与 GCD的区别
- Android配置----DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法
- 在内网运行系统在外网访问(可用于微信调试)
- iOS 上传图片方法总结