Mybatis使用時Propertyplaceholderconfigurer導出配置數據沒法讀入

形成這種狀況的緣由是由於讀取配置文件操做早於Propertyplaceholderconfigurer加載配置文件,致使讀取配置文件時直接讀取了硬編碼的鍵名,而非鍵值spring

在使用mybatis的自動掃描注入時致使這種狀況是由於使用了sqlSessionFactoryBean,例如:sql

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- mapper接口所在位置 -->
    <property name="basePackage" value="com.yumei.batchpay.common.dal.daointerface" />
    <property name="sqlSessionFactoryBean" ref="sqlSessionFactory" />
</bean>

在這種狀況下,spring會提早去裝配sqlSessionFactory,從而致使數據庫的配置文件在Propertyplaceholderconfigurer還沒加載的時候就已經被讀取了,因此會鏈接失敗。數據庫

因此須要使用另一種配置sqlSessionFactoryBean的方式。markdown

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- mapper接口所在位置 -->
    <property name="basePackage" value="com.yumei.batchpay.common.dal.daointerface" />
    <!-- 注意此處爲sqlSessionFactoryBeanName而不是sqlSessionFactoryBean -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>

可是有時候發現就算這樣寫仍是會失效,緣由是由於在applicationContext中配置了自動注入,因此就算沒有配置sqlSessionFactoryBean,也沒自動注入了,固然也就提早被裝配了。mybatis

相關文章
相關標籤/搜索