SpringBoot超詳細(xì)講解@Value注解
一、非配置文件注入
1、注入普通字符串
直接附在屬性名上,在 Bean 初始化時,會賦初始值。
@Value("admin")
private String name;
2、注入JAVA系統(tǒng)變量
@Value("#{systemProperties['os.name']}")
private String osName;
這里的 osName 是 JAVA 的 System.getProperties() 方法獲取的JAVA環(huán)境變量 ,查看java系統(tǒng)變量的方法如下:
public String getproperties() {
//獲取所有的屬性
Properties properties = System.getProperties();
//為了看看系統(tǒng)的屬性有幾個,加了一個計數(shù)器
//遍歷所有的屬性
for (String key : properties.stringPropertyNames()) {
System.out.println(key + "=" + properties.getProperty(key));
}
return null;
}3、注入表達式
@Value("#{ T(java.lang.Math).random() * 100.0 }")
private double randomNumber;
注:#{} 中寫表達式。
4、注入其他Bean屬性
注入 beanInject 對象的屬性 another 。
@Value("#{beanInject.another}")
private String fromAnotherBean;
5、注入文件資源
@Value("classpath:com/hry/spring/configinject/config.txt")
private Resource resourceFile;
6、注入URL資源
@Value("http://www.baidu.com")
private Resource testUrl;
二、通過配置文件注入
SpringBoot 通過 @Value 注解將配置文件中的屬性注入到容器內(nèi)組件中(可用在 @Controller 、@Service 、@Configuration、@Component 等Spring托管的類中)
1、注入普通字符串
在 application.properties 配置文件中有如下配置:
name=admin
@Value 注入屬性:
@Value("${name}")
public String name;
此時,name 的值為 admin。
當(dāng)配置文件中 name= 空時,此時name屬性的值為 "" 。
我們可以為注入屬性設(shè)置默認(rèn)值:
@Value("${name:admin}")
public String name;
2、注入基本類型
在 application.properties 配置文件中有如下配置:
port=8888
open=true
score=90.1
@Value 注入屬性:
@Value("${port:1111}")
private int port;
@Value("${open:true}")
private boolean open;
@Value("${score:100}")
private double score;3、注入數(shù)組類型
在 application.properties 配置文件中有如下配置:
ids=1,2,3
@Value 注入屬性:
@Value("${ids}")
public int[] arrIds;
注:當(dāng)配置文件中 ids 沒有對應(yīng)值時,數(shù)組 arrIds 為 非null空數(shù)組,長度為 0。
4、注入List類型
在 application.properties 配置文件中有如下配置:
ids=1,2,3
@Value 注入屬性:
@Value("#{'${ids}'.split(',')}")
public List<String> listIds;
注:當(dāng)配置文件中 ids 沒有對應(yīng)值時,集合 listIds 長度為 1 ,存在值為:"" 。
5、注入Map類型
在 application.properties 配置文件中有如下配置:
user="{name:'admin', age:'23'}"
@Value 注入屬性:
@Value("#{${user}}")
public Map<String, String> userMap;
#{} 表示使用 SpEL表達式 。
注:當(dāng)配置文件中 user 沒有對應(yīng)值是,啟動報錯。
到此這篇關(guān)于SpringBoot超詳細(xì)講解@Value注解的文章就介紹到這了,更多相關(guān)SpringBoot @Value注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之稀疏矩陣定義與用法示例
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之稀疏矩陣定義與用法,結(jié)合實例形式分析了java稀疏矩陣的定義、運算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
使用SpringBoot動態(tài)切換數(shù)據(jù)源的實現(xiàn)方式
在我們企業(yè)項目開發(fā)的過程中,有的時候,一個項目需要在運行時,根據(jù)某種條件選擇使用哪個數(shù)據(jù)源,那么此時該怎么進行動態(tài)切換呢,本文給大家例舉一種常見的實現(xiàn)方式,文中有詳細(xì)的實現(xiàn)步驟,需要的朋友可以參考下2023-12-12
SpringCloud通過Feign傳遞List類型參數(shù)方式
這篇文章主要介紹了SpringCloud通過Feign傳遞List類型參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot整合flyway實現(xiàn)步驟解析
這篇文章主要介紹了SpringBoot整合flyway實現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
Spring boot 默認(rèn)靜態(tài)資源路徑與手動配置訪問路徑的方法
這篇文章主要介紹了Spring boot 默認(rèn)靜態(tài)資源路徑與手動配置訪問路徑的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05

