關(guān)于@Value注解取不到值的幾種情況
@Value注解取不到值的幾種情況
在spring的框架中,我們經(jīng)常使用@Value注解來獲取定義在application.properties的屬性值,正常情況下是可以輕松的獲取到值的,但是有幾種特殊情況下是獲取不到值的,在這記錄下,以防止以后犯錯(cuò)誤。正常獲取的用法如下:
在application.properties中定義一個(gè)屬性值:
正常情況下在代碼里面這樣獲?。?/p>
@Value("${ftpIP}") private String ftpIP;
幾種獲取不到值的特殊情況如下
情況一:使用static或者final修飾了tagValue
@Value("${ftpIP}") private static String ftpIP; @Value("${ftpUserName}") private final String ftpUserName;
情況二:用該注解的類上面沒有加注解,即不能被spring管理
public class FTPManagerService { @Value("${ftpIP}") private static String ftpIP; }
情況三:類被new新建了實(shí)例,而沒有使用@Autowired
public class FTPManagerService { @Value("${ftpIP}") private static String ftpIP; } public class Test{ /*錯(cuò)誤用法*/ FTPManagerService f = new FTPManagerService (); /*正確用法*/ @Autowired FTPManagerService f2; }
@Value取不到值的原因
在springboot中想獲取配置文件中的值,一般的方法為
@Value("${tag}") private String tagValue;
但是取值時(shí),有時(shí)這個(gè)tagvalue為NULL,
可能原因有
1.類沒有加上@Component(或者@service等)
@Component //遺漏 class TestValue{ @Value("${tag}") private String tagValue; }
2.類被new新建了實(shí)例,而沒有使用@Autowired
@Component class TestValue{ @Value("${tag}") private String tagValue; } class Test{ ... TestValue testValue = new TestValue()
正確方式
1.使用@Autowired注入
2.在controller層注值
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot使用druid配置多數(shù)據(jù)源問題
這篇文章主要介紹了SpringBoot使用druid配置多數(shù)據(jù)源問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03java并發(fā)編程專題(六)----淺析(JUC)Semaphore
這篇文章主要介紹了java JUC)Semaphore的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07以Java代碼的方式總結(jié)幾個(gè)典型的內(nèi)存溢出案例
作為程序員,多多少少都會(huì)遇到一些內(nèi)存溢出的場景,如果你還沒遇到,說明你工作的年限可能比較短,或者你根本就是個(gè)假程序員!哈哈,開個(gè)玩笑.今天分享給大家Java內(nèi)存溢出的相關(guān)案例,希望大家在日常工作中,盡量避免寫這些low水平的代碼,需要的朋友可以參考下2021-06-06Java圖形用戶界面設(shè)計(jì)(Swing)的介紹
看到多數(shù)人提到 Java 就以為是網(wǎng)絡(luò)開發(fā),其實(shí)不是這樣的,Java 也可以開發(fā)應(yīng)用程序,而且可以開發(fā)出漂亮的圖形用戶界面的應(yīng)用程序,因此,我寫下這篇文章,希望能帶你進(jìn)入 Java 圖形用戶界面設(shè)計(jì)之門。2016-07-07java書店系統(tǒng)畢業(yè)設(shè)計(jì) 總體設(shè)計(jì)(1)
這篇文章主要介紹了java書店系統(tǒng)畢業(yè)設(shè)計(jì),第一步系統(tǒng)總體設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10詳解Spring Cloud Eureka多網(wǎng)卡配置總結(jié)
本篇文章主要介紹了詳解Spring Cloud Eureka多網(wǎng)卡配置總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04Spring?Boot?使用?Disruptor?做內(nèi)部高性能消息隊(duì)列
這篇文章主要介紹了Spring?Boot?使用?Disruptor?做內(nèi)部高性能消息隊(duì)列,工作中遇到項(xiàng)目使用Disruptor做消息隊(duì)列,對你沒看錯(cuò),不是Kafka,也不是rabbitmq。Disruptor有個(gè)最大的優(yōu)點(diǎn)就是快,還有一點(diǎn)它是開源的哦,下面做個(gè)簡單的記錄2022-06-06Java 使用keytool創(chuàng)建CA證書的操作
這篇文章主要介紹了Java 使用keytool創(chuàng)建CA證書的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01