spring@value注入配置文件值失敗的原因分析
spring@value注入配置文件值失敗的原因
今天我寫了一個system.propertities配置文件定義了一個變量host=localhost。
然后在spring 配置文件中加入了加載配置
在service中這樣寫
@Value("${host}")
private static String host;
但是獲取不到,各種查資料,最后發(fā)現(xiàn)是static關(guān)鍵字的原因
spring@Value依賴注入是依賴set方法
set方法是普通的對象方法,static變量是類的屬性,沒有set方法;
spring配置文件@Value注解注入失敗或為null
在spring使用@Value從application.properties將值注入到變量中時,遇到
了注入失敗和注入值為null兩種問題。
解決方案
1、查看maven依賴,
(如果生效,可不進行后續(xù)步驟)
2、加入注釋@PropertySource(value = “classpath:/application.properties”)配置文件路徑。
(如果生效,可不進行后續(xù)步驟)
3、將被注入變量作為構(gòu)造方法參數(shù)進行輸入。
代碼示例
maven依賴
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
config類
@Configuration
//聲明properties文件位置
@PropertySource(value = "classpath:/application.properties")
public class DemoConfig {
private String name;
//將@Value作為構(gòu)造函數(shù)參數(shù)注入
public DemoConfig(@Value("${book.name}") String name){
this.name = name;
}
public void output(){
System.out.println(name);
}
}
main
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
// SpringApplication.run(DemoApplication.class, args);
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(DemoConfig.class);
DemoConfig service = context.getBean(DemoConfig.class);
service.output();
}
}
問題解析
1、spring版本問題,根據(jù)本人實驗,4.x以下版本會出現(xiàn)一些注入問題。
2、沒有寫@PropertySource(value = “classpath:/application.properties”)注解,或路徑不對。
3、.properties文件沒有放在resources文件夾中。
問題拓展
1、除了springboot自帶的application.properties文件外,可以自己創(chuàng)建test.properties,導入其他自創(chuàng)屬性,并管理屬性。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java多線程正確使用倒計時協(xié)調(diào)器CountDownLatch方法詳解
這篇文章主要為大家介紹了Java多線程倒計時協(xié)調(diào)器CountDownLatch的正確使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
SpringBoot讀取resource目錄下文件失敗的原因及解決方案
在idea中運行時,有些resource下文件讀取工具類能夠正常獲取讀取到文件,但是通過java–jar的方式去運行jar包,此時resource下文件讀取工具類讀取文件就失效了,本文就給大家介紹一下SpringBoot讀取resource目錄下文件失敗解決方案,需要的朋友可以參考下2023-08-08
Springboot實現(xiàn)人臉識別與WebSocket長連接的實現(xiàn)代碼
這篇文章主要介紹了Springboot實現(xiàn)人臉識別與WebSocket長連接的實現(xiàn),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11
如何解決freemarker靜態(tài)化生成html頁面亂碼的問題
這篇文章主要介紹了如何解決freemarker靜態(tài)化生成html頁面亂碼的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01

