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!

推薦閱讀: