首頁 > 軟體

SpringBoot超詳細講解@Value註解

2022-07-18 14:03:35

一、非組態檔注入

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註解內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com