在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) { 解决了这个问题;如果碰到这个问题可以通过升级版本解决
时间: 2024-10-10 18:22:18