码迷,mamicode.com
首页 > 移动开发 > 详细

关于Spring+MyBatis的MapperScannerConfigurer无法加载place-holder属性问题分析

时间:2017-03-23 15:16:25      阅读:811      评论:0      收藏:0      [点我收藏+]

标签:spring   mybatis   mapper   

在1.2.5以下版本的mybatis-spring一下配置可能会无法启动,但junit方式可以启动

配置:

<bean id="sqlSessionFactoryName" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation"
     value="${dao.mybatis.sqlSessionFactory.configLocation}" />
</bean>
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer" lazy-init="true">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryName"/>
<property name="processPropertyPlaceHolders" value="true"/>
<property name="basePackage" value="${dao.mybatis.scanner.basePackage}" />
</bean>
启动方式:
ctx = new ClassPathXmlApplicationContext(configFileName);或者是web方式启动
会报属性找不到的错误;但通过junit方式能够正常启动。
具体原因如下:
    MapperScannerConfigurer的processPropertyPlaceHolders方法中加入了context类型的判断
    if(!prcs.isEmpty() && this.applicationContext instanceof GenericApplicationContext) {
    这个会导致采用ClassPathXmlApplicationContext启动的应用跳过了加载属性的动作,从而导致属性找不到。
在1.3.1版本(我看的是1.3.1版本,1.3.0版本没有验证)中该判断改为:
    if(!prcs.isEmpty() && this.applicationContext instanceof ConfigurableApplicationContext) {
     解决了这个问题;如果碰到这个问题可以通过升级版本解决




本文出自 “天涯时空” 博客,请务必保留此出处http://leshjmail.blog.51cto.com/629172/1909489

关于Spring+MyBatis的MapperScannerConfigurer无法加载place-holder属性问题分析

标签:spring   mybatis   mapper   

原文地址:http://leshjmail.blog.51cto.com/629172/1909489

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!