Spring及Mybatis整合占位符解析失敗問題解決
問題:寫了一個(gè)新的dao接口,進(jìn)行單元測試時(shí)提示:
Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'maxActive'; nested exception is java.lang.NumberFormatException: For input string: "${maxActive}"
原配置datasource時(shí)使用了占位符,該提示是在解析占位符${maxActive}時(shí)未找到對應(yīng)的屬性。
單元測試加載properties使用@PropertySource(value = {"classpath*:jdbc.properties"})注解加載配置文件。
在確認(rèn)自己properties文件路徑是正確的且存在該屬性值后,在網(wǎng)上找到相應(yīng)的資料如https://my.oschina.net/u/1455908/blog/215953說的是在配置mybatis的MapperScannerConigurer時(shí)會(huì)優(yōu)先于@PropertySource注解解析占位符,由于占位符未進(jìn)行解析,直接使用了“${maxActive}”了該字符串作為該配置項(xiàng)的值。也就是報(bào)錯(cuò)所說的“${maxActive}”這個(gè)字符串無法轉(zhuǎn)化成對應(yīng)的int數(shù)值。
解決問題
將配置文件的加載由原先使用注解@PropertySource(value = {"classpath*:jdbc.properties"})改成如下:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> <property name="ignoreUnresolvablePlaceholders" value="true"></property> </bean>
原先MapperScannerConfigurer的配置沒有做修改,如下:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.**.dao,com.**.mapper,com.**.test.**.mapper" /> <!--網(wǎng)上說這個(gè)name屬性值要配置成這個(gè)sqlSessionFactoryBeanName名字,我恰好配的就是這個(gè),所以我這里不需要改--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean>
這樣該問題解決。但疑問依然存在,為何@PropertySource這個(gè)注解沒有ignoreUnresolvablePlaceholders這個(gè)屬性可以進(jìn)行配置,并且用xml的方式又能正確解析。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java操作solr實(shí)現(xiàn)查詢功能的實(shí)例
下面小編就為大家分享一篇java操作solr實(shí)現(xiàn)查詢功能的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11java程序員必會(huì)的遠(yuǎn)程debug教程
這篇文章主要為大家介紹了java程序員必會(huì)的遠(yuǎn)程debug教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08idea本地jar使用maven打包本地依賴實(shí)現(xiàn)自動(dòng)編譯到項(xiàng)目里的操作
這篇文章主要介紹了idea本地jar使用maven打包本地依賴實(shí)現(xiàn)自動(dòng)編譯到項(xiàng)目里的操作,本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-05-05java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07關(guān)于Java 項(xiàng)目封裝sqlite連接池操作持久化數(shù)據(jù)的方法
這篇文章主要介紹了Java 項(xiàng)目封裝sqlite連接池操作持久化數(shù)據(jù)的方法,文中給大家介紹了sqlite的體系結(jié)構(gòu)及封裝java的sqlite連接池的詳細(xì)過程,需要的朋友可以參考下2021-11-11Java 圖片復(fù)制功能實(shí)現(xiàn)過程解析
這篇文章主要介紹了Java 圖片復(fù)制功能實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10