Spring及Mybatis整合占位符解析失敗問(wèn)題解決
問(wèn)題:寫(xiě)了一個(gè)新的dao接口,進(jìn)行單元測(cè)試時(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í)未找到對(duì)應(yīng)的屬性。
單元測(cè)試加載properties使用@PropertySource(value = {'classpath*:jdbc.properties'})注解加載配置文件。
在確認(rèn)自己properties文件路徑是正確的且存在該屬性值后,在網(wǎng)上找到相應(yīng)的資料如https://my.oschina.net/u/1455908/blog/215953說(shuō)的是在配置mybatis的MapperScannerConigurer時(shí)會(huì)優(yōu)先于@PropertySource注解解析占位符,由于占位符未進(jìn)行解析,直接使用了“${maxActive}”了該字符串作為該配置項(xiàng)的值。也就是報(bào)錯(cuò)所說(shuō)的“${maxActive}”這個(gè)字符串無(wú)法轉(zhuǎn)化成對(duì)應(yīng)的int數(shù)值。
解決問(wèn)題
將配置文件的加載由原先使用注解@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的配置沒(méi)有做修改,如下:
<bean class='org.mybatis.spring.mapper.MapperScannerConfigurer'> <property name='basePackage' value='com.**.dao,com.**.mapper,com.**.test.**.mapper' /> <!--網(wǎng)上說(shuō)這個(gè)name屬性值要配置成這個(gè)sqlSessionFactoryBeanName名字,我恰好配的就是這個(gè),所以我這里不需要改--> <property name='sqlSessionFactoryBeanName' value='sqlSessionFactory'/></bean>
這樣該問(wèn)題解決。但疑問(wèn)依然存在,為何@PropertySource這個(gè)注解沒(méi)有ignoreUnresolvablePlaceholders這個(gè)屬性可以進(jìn)行配置,并且用xml的方式又能正確解析。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. React實(shí)現(xiàn)一個(gè)倒計(jì)時(shí)hook組件實(shí)戰(zhàn)示例2. XML解析錯(cuò)誤:未組織好 的解決辦法3. ASP基礎(chǔ)入門(mén)第三篇(ASP腳本基礎(chǔ))4. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫(huà)特效5. html中的form不提交(排除)某些input 原創(chuàng)6. 三個(gè)不常見(jiàn)的 HTML5 實(shí)用新特性簡(jiǎn)介7. XHTML 1.0:標(biāo)記新的開(kāi)端8. 使用css實(shí)現(xiàn)全兼容tooltip提示框9. html清除浮動(dòng)的6種方法示例10. Xml簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
