SpringBoot超詳細講解@Value註解
一、非配置文件註入
1、註入普通字符串
直接附在屬性名上,在 Bean 初始化時,會賦初始值。
@Value("admin") private String name;
2、註入JAVA系統變量
@Value("#{systemProperties['os.name']}") private String osName;
這裡的 osName
是 JAVA 的 System.getProperties()
方法獲取的JAVA環境變量 ,查看java系統變量的方法如下:
public String getproperties() { //獲取所有的屬性 Properties properties = System.getProperties(); //為瞭看看系統的屬性有幾個,加瞭一個計數器 //遍歷所有的屬性 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
註解將配置文件中的屬性註入到容器內組件中(可用在 @Controller
、@Service
、@Configuration
、@Component
等Spring托管的類中)
1、註入普通字符串
在 application.properties
配置文件中有如下配置:
name=admin
@Value
註入屬性:
@Value("${name}") public String name;
此時,name
的值為 admin
。
當配置文件中 name=
空時,此時name屬性的值為 ""
。
我們可以為註入屬性設置默認值:
@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、註入數組類型
在 application.properties
配置文件中有如下配置:
ids=1,2,3
@Value
註入屬性:
@Value("${ids}") public int[] arrIds;
註:當配置文件中 ids
沒有對應值時,數組 arrIds
為 非null空數組
,長度為 0
。
4、註入List類型
在 application.properties
配置文件中有如下配置:
ids=1,2,3
@Value
註入屬性:
@Value("#{'${ids}'.split(',')}") public List<String> listIds;
註:當配置文件中 ids
沒有對應值時,集合 listIds
長度為 1
,存在值為:""
。
5、註入Map類型
在 application.properties
配置文件中有如下配置:
user="{name:'admin', age:'23'}"
@Value
註入屬性:
@Value("#{${user}}") public Map<String, String> userMap;
#{}
表示使用 SpEL表達式
。
註:當配置文件中 user
沒有對應值是,啟動報錯。
到此這篇關於SpringBoot超詳細講解@Value註解的文章就介紹到這瞭,更多相關SpringBoot @Value註解內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- SpringBoot配置加載,各配置文件優先級對比方式
- Springboot常用註解及配置文件加載順序詳解
- springboot如何讀取模板文件
- SpringBoot框架配置文件路徑設置方式
- 詳解SpringBoot讀取配置文件的N種方法