Spring配置文件無法讀取properties屬性的解決
Spring配置文件無法讀取properties
在Spring項(xiàng)目的配置文件中引用properties屬性文件中的屬性,運(yùn)行時(shí)無法識(shí)別properties屬性文件中的屬性引用,但properties屬性文件和屬性明明已經(jīng)存在
例如:


要在Spring中使用外部properties屬性文件,需要在Spring配置文件中添加bean后處理器PropertyPlaceholderConfigurer,并指明外部properties屬性文件的路徑:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="properties路徑"/>
</bean>如果有多個(gè)properties屬性文件,可以使用下面方式:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>properties路徑</value>
<value>properties路徑</value>
...
</list>
</property>
</bean>@Value讀取properties類型錯(cuò)誤
Invalid boolean value [${spring.datasource.testWhileIdle}]
在開發(fā)過程中,遇到一個(gè)比較無語的問題:重新拉一份代碼搭框架,在啟動(dòng)的時(shí)候讀取properties配置文件報(bào)類型轉(zhuǎn)換錯(cuò)誤,因?yàn)榇a是一樣的,所以排除代碼的問題,在百度谷歌搜索了一遍沒有找到能夠解決的辦法
先貼上報(bào)錯(cuò)信息:
Unsatisfied dependency expressed through field 'testWhileIdle'; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'boolean'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value [${spring.datasource.testWhileIdle}]
我們可以看到,報(bào)錯(cuò)信息給我們的提示是,String轉(zhuǎn)Boolean類型錯(cuò)誤。

這里使用了spring的@Value注解,我在配置文件中填的是 true。
后來我對(duì)讀到的參數(shù)進(jìn)行強(qiáng)轉(zhuǎn)類型,依舊報(bào)錯(cuò)??梢源_定取到的值是不正確的
經(jīng)過測(cè)試,讀取值,發(fā)現(xiàn)讀取到的值為 spring.datasource.testWhileIdle 而不是 true (spring在讀取配置文件時(shí),如果不能讀取到,@Value取到的值就是括號(hào)里面的值,有點(diǎn)坑。)
我們可以斷定未加載properties成功。
知道了讀取不到的真正原因之后,其實(shí)再去搜索問題就比較簡(jiǎn)單了。
eclipse解決方案
由于eclipse配置源代碼excludes過濾掉了application.properties或application.yml造成的,具體位置在: Project Properties --> Java Build Path --> Source(tab) --> Source folders on build path: [Exclusion section]
idea解決方案
目前在idea里的配置我還不太清楚,我用的是idea,最后通過pom.xml解決問題

引入properties,最終解決。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java商城項(xiàng)目實(shí)戰(zhàn)之購物車功能實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了java商城項(xiàng)目實(shí)戰(zhàn)之購物車功能實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
使用maven的profile構(gòu)建不同環(huán)境配置的方法
這篇文章主要介紹了使用maven的profile構(gòu)建不同環(huán)境配置的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
深入解析Jdk8中Stream流的使用讓你脫離for循環(huán)
這篇文章主要介紹了Jdk8中Stream流的使用,讓你脫離for循環(huán),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
spring mvc中的@PathVariable動(dòng)態(tài)參數(shù)詳解
這篇文章主要介紹了spring mvc中的@PathVariable動(dòng)態(tài)參數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
java注解之運(yùn)行時(shí)修改字段的注解值操作
這篇文章主要介紹了java注解之運(yùn)行時(shí)修改字段的注解值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Spring?Cloud中Sentinel的兩種限流模式介紹
如何使用Sentinel做流量控制呢?這篇文章就來為大家詳細(xì)介紹了Spring?Cloud中Sentinel的兩種限流模式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05

