SpringBoot中@Value注入靜態(tài)變量方式
項(xiàng)目場景
Spring Boot中靜態(tài)變量想使用@Value注入值:
在application.properties或application.yml中定義topic名稱:
# application.properties test.name=測試
@Value("${test.name}")
public static String name;這時(shí)候打印發(fā)現(xiàn)是空的, 通過上例可以看出,使用@Value注解修飾靜態(tài)屬性,啟動(dòng)項(xiàng)目時(shí)不會(huì)報(bào)錯(cuò),但是也不會(huì)給該靜態(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 的某個(gè)方法。
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é)果
// 生成一個(gè)隨機(jī)數(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 時(shí),如果沒有指定名稱,則默認(rèn)為類名首字母小寫,如:otherBean 。
當(dāng)然我們也可以使用 @Component("myName") 形式,指定其他 bean 的名稱,此時(shí),訪問則需要使用 @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;
// 注入U(xiǎn)RL資源
@Value("https://www.hxstrive.com")
private Resource urlResource;總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
登陸驗(yàn)證碼kaptcha結(jié)合spring boot的用法詳解
在一個(gè)web應(yīng)用中驗(yàn)證碼是一個(gè)常見的元素。不管是防止機(jī)器人還是爬蟲都有一定的作用,下面這篇文章主要給大家介紹了登陸驗(yàn)證碼kaptcha結(jié)合spring boot用法的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-06-06
Java并發(fā)編程之Semaphore(信號(hào)量)詳解及實(shí)例
這篇文章主要介紹了Java并發(fā)編程之Semaphore(信號(hào)量)詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06
區(qū)分Java中的ArrayList和LinkedList
這篇文章主要介紹了如何區(qū)分Java中ArrayList和LinkedList,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06
Java后臺(tái)Controller實(shí)現(xiàn)文件下載操作
這篇文章主要介紹了Java后臺(tái)Controller實(shí)現(xiàn)文件下載操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
SpringBoot中的響應(yīng)式web應(yīng)用詳解
這篇文章主要介紹了SpringBoot中的響應(yīng)式web應(yīng)用詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
java?Object轉(zhuǎn)Integer實(shí)現(xiàn)方式
這篇文章主要介紹了java?Object轉(zhuǎn)Integer實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07

