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


要在Spring中使用外部properties屬性文件,需要在Spring配置文件中添加bean后處理器PropertyPlaceholderConfigurer,并指明外部properties屬性文件的路徑:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="properties路徑"/>
</bean>如果有多個properties屬性文件,可以使用下面方式:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>properties路徑</value>
<value>properties路徑</value>
...
</list>
</property>
</bean>@Value讀取properties類型錯誤
Invalid boolean value [${spring.datasource.testWhileIdle}]
在開發(fā)過程中,遇到一個比較無語的問題:重新拉一份代碼搭框架,在啟動的時候讀取properties配置文件報類型轉(zhuǎn)換錯誤,因為代碼是一樣的,所以排除代碼的問題,在百度谷歌搜索了一遍沒有找到能夠解決的辦法
先貼上報錯信息:
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}]
我們可以看到,報錯信息給我們的提示是,String轉(zhuǎn)Boolean類型錯誤。

這里使用了spring的@Value注解,我在配置文件中填的是 true。
后來我對讀到的參數(shù)進行強轉(zhuǎn)類型,依舊報錯。可以確定取到的值是不正確的
經(jīng)過測試,讀取值,發(fā)現(xiàn)讀取到的值為 spring.datasource.testWhileIdle 而不是 true (spring在讀取配置文件時,如果不能讀取到,@Value取到的值就是括號里面的值,有點坑。)
我們可以斷定未加載properties成功。
知道了讀取不到的真正原因之后,其實再去搜索問題就比較簡單了。
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,最終解決。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java關(guān)于BeabUtils.copyproperties的用法
這篇文章主要介紹了Java關(guān)于BeabUtils.copyproperties的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
如何利用Java8 Stream API對Map按鍵或值排序
這篇文章主要給大家介紹了關(guān)于如何利用Java8 Stream API對Map按鍵或值排序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Java8具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
詳解Spring batch 入門學(xué)習(xí)教程(附源碼)
本篇文章主要介紹了Spring batch 入門學(xué)習(xí)教程(附源碼),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
深入解析Spring?TransactionTemplate?高級用法(示例代碼)
TransactionTemplate是?Spring?框架中一個強大的工具,它允許開發(fā)者以編程方式控制事務(wù),通過本文的詳細(xì)解析和示例代碼,我們可以看到如何使用?`TransactionTemplate`?來執(zhí)行事務(wù)性操作,并處理高級事務(wù)場景,感興趣的朋友跟隨小編一起看看吧2025-02-02
SpringBoot整合騰訊云COS對象存儲實現(xiàn)文件上傳的示例代碼
本文主要介紹了SpringBoot整合騰訊云COS對象存儲實現(xiàn)文件上傳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12

