spring3+mybatis 使用MapperScannerConfigurer时context:property-placeholder载不进属性

来源:互联网 发布:七区独立袋装弹簧 知乎 编辑:程序博客网 时间:2024/05/12 16:05

在系统启动时,MapperScannerConfigurer会立即加载sqlSessionFactory,这时property-placeholder正在解析jdbc.properties,因此会报错:

java.lang.ClassNotFoundException: ${jdbc.driverClass}

如下:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- <property name="configLocation" value="classpath:mybatis-config.xml" /> --><property name="mapperLocations" value="classpath:com/mobile263/meeting/dao/*.xml" /><property name="dataSource" ref="dataSource" /></bean><!-- <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="com.mobile263.meeting.dao.UserDAO"></property><property name="sqlSessionFactory" ref="sqlSessionFactory"></property></bean> --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" lazy-init="true">    <property name="basePackage" value="com.mobile263.meeting.dao" />    <property name="sqlSessionFactoryBeanName" ref="sqlSessionFactory"></property></bean>

给sqlSessionFactory取一个别名,然后以value的形式加载到org.mybatis.spring.mapper.MapperScannerConfigurer中,就不会立即加载sqlSessionFactory,从而导致读取jdbc.properties失败。

<property name="sqlSessionFactoryBeanName" value="aliasSqlSessionFactory"></property>

配置文件改成:

<bean id="aliasSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- <property name="configLocation" value="classpath:mybatis-config.xml" /> --><property name="mapperLocations" value="classpath:com/mobile263/meeting/dao/*.xml" /><property name="dataSource" ref="dataSource" /></bean><!-- <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="com.mobile263.meeting.dao.UserDAO"></property><property name="sqlSessionFactory" ref="sqlSessionFactory"></property></bean> --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" lazy-init="true">    <property name="basePackage" value="com.mobile263.meeting.dao" />    <property name="sqlSessionFactoryBeanName" value="aliasSqlSessionFactory"></property></bean><!-- 事务管理器配置,单数据源事务 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean>


0 0
原创粉丝点击