SpringBoot中@Value注入靜態(tài)變量方式
項目場景
Spring Boot中靜態(tài)變量想使用@Value注入值:
在application.properties或application.yml中定義topic名稱:
# application.properties test.name=測試
@Value("${test.name}")
public static String name;這時候打印發(fā)現(xiàn)是空的, 通過上例可以看出,使用@Value注解修飾靜態(tài)屬性,啟動項目時不會報錯,但是也不會給該靜態(tài)屬性設(shè)置值。
解決方案
可以通過set方法給靜態(tài)屬性設(shè)置配置文件中的屬性值。
@Service
public class TestService {
private static String name;
@Value("${test.name}")
public void setName(String param) {
name = param;
}
public static String getName() {
return name;
}
}注解說明
- @Value("${}"):可以獲取對應(yīng)屬性文件中定義的屬性值。
- @Value("#{}"):表示 SpEl 表達(dá)式通常用來獲取 bean 的屬性,或者調(diào)用 bean 的某個方法。
1、@Value("${}")使用示例
直接將字符串賦值
@Value("hello world")
private String name;從屬性文件中獲取值
@Value("${test.name}")
private String name; // 結(jié)果:測試設(shè)置默認(rèn)值
@Value("${test.name:defaultValue}")
private String name; // 結(jié)果:defaultValue2、@Value("#{}")使用示例
注入操作系統(tǒng)屬性
@Value("#{systemProperties['os.name']}")
private String osName; // 結(jié)果:Windows 10注入表達(dá)式結(jié)果
// 生成一個隨機數(shù)
@Value("#{ T(java.lang.Math).random() * 1000.0 }")
private double randomNumber;
// 使用 System 類獲取系統(tǒng)環(huán)境變量 PATH
@Value("#{ T(java.lang.System).getenv('path') }")
private String path;注入其他Bean屬性
// 其他Bean
@Component
public class OtherBean {
@Value("OtherBean的NAME屬性")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// 用法
@Component
public class MyBean {
@Value("#{otherBean.name}")
private String fromAnotherBean;
// ...
}注意,其他 bean 使用 @Component 時,如果沒有指定名稱,則默認(rèn)為類名首字母小寫,如:otherBean 。
當(dāng)然我們也可以使用 @Component("myName") 形式,指定其他 bean 的名稱,此時,訪問則需要使用 @Value("#{myName.name}")。如下:
// 其他bean,自定義名稱為 myBeans
@Component("myBeans")
public class OtherBean2 {
@Value("OtherBean的NAME屬性")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// 用法
@Component
public class MyBean {
@Value("#{myBeans.name}")
private String fromAnotherBean2;
// ...
}注入資源
// 注入文件資源
@Value("classpath:props/application.properties")
private Resource fileResource;
// 注入URL資源
@Value("https://www.hxstrive.com")
private Resource urlResource;總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java圖形化界面實現(xiàn)簡單混合運算計算器的示例代碼
這篇文章主要介紹了java圖形化界面實現(xiàn)簡單混合運算計算器的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
SpringCloud Nacos作為配置中心超詳細(xì)講解
這篇文章主要介紹了Springcloud中的Nacos作為配置中心,本文以用戶微服務(wù)為例,進(jìn)行統(tǒng)一的配置,結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
IDEA下創(chuàng)建SpringBoot+MyBatis+MySql項目實現(xiàn)動態(tài)登錄與注冊功能
這篇文章主要介紹了IDEA下創(chuàng)建SpringBoot+MyBatis+MySql項目實現(xiàn)動態(tài)登錄與注冊功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
java servlet結(jié)合mysql搭建java web開發(fā)環(huán)境
之前寫過一篇 servlet+oracle的文章,但是那是因為公司有可能接那么一個項目,然后我當(dāng)時也比較閑,所以隨便學(xué)了下,那玩意是白去研究了,因為公司后面并沒接到那項目。2015-12-12
IDEA創(chuàng)建Java項目保姆級教程(超詳細(xì)!)
這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Java項目保姆級教程的相關(guān)資料,Java是一種廣泛使用的編程語言,廣泛用于Web應(yīng)用程序和客戶端應(yīng)用程序的開發(fā),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
Maven?項目用Assembly打包可執(zhí)行jar包的方法
這篇文章主要介紹了Maven?項目用Assembly打包可執(zhí)行jar包的方法,該方法只可打包非spring項目的可執(zhí)行jar包,需要的朋友可以參考下2023-03-03

