Spring配置文件無(wú)法讀取properties屬性的解決
Spring配置文件無(wú)法讀取properties
在Spring項(xiàng)目的配置文件中引用properties屬性文件中的屬性,運(yùn)行時(shí)無(wú)法識(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è)比較無(wú)語(yǔ)的問題:重新拉一份代碼搭框架,在啟動(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關(guān)于BeabUtils.copyproperties的用法
這篇文章主要介紹了Java關(guān)于BeabUtils.copyproperties的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08如何利用Java8 Stream API對(duì)Map按鍵或值排序
這篇文章主要給大家介紹了關(guān)于如何利用Java8 Stream API對(duì)Map按鍵或值排序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Java8具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11詳解Spring batch 入門學(xué)習(xí)教程(附源碼)
本篇文章主要介紹了Spring batch 入門學(xué)習(xí)教程(附源碼),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11深入解析Spring?TransactionTemplate?高級(jí)用法(示例代碼)
TransactionTemplate是?Spring?框架中一個(gè)強(qiáng)大的工具,它允許開發(fā)者以編程方式控制事務(wù),通過本文的詳細(xì)解析和示例代碼,我們可以看到如何使用?`TransactionTemplate`?來執(zhí)行事務(wù)性操作,并處理高級(jí)事務(wù)場(chǎng)景,感興趣的朋友跟隨小編一起看看吧2025-02-02SpringBoot整合騰訊云COS對(duì)象存儲(chǔ)實(shí)現(xiàn)文件上傳的示例代碼
本文主要介紹了SpringBoot整合騰訊云COS對(duì)象存儲(chǔ)實(shí)現(xiàn)文件上傳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12