欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring @Value如何通過${}、#{}注入不同類型的值

 更新時間:2024年05月31日 08:44:32   作者:少爺晚安。  
這篇文章主要介紹了Spring @Value如何通過${}、#{}注入不同類型的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Spring @Value通過${}、#{}注入不同類型值

@Value有兩種注入方式

  • @Value("${}"):自定義參數(shù)獲取,獲取對應(yīng)屬性文件(yml或properties文件)中自定義的屬性
  • @Value("#{}"):SpEL表達式,獲取Bean的某個屬性或調(diào)用其某個方法,還可以表示常量

"${}"可以設(shè)置默認值,當(dāng)從配置文件中獲取不到時,若沒有設(shè)置默認值,則會拋異常。

//在指定的配置路徑后面加冒號,在冒號后面給定默認值
@Value("${constants.test:hello}")

注意:

${}和#{}可以嵌套使用,但必須#{}外面,${}在里面,先會執(zhí)行${},因為spring執(zhí)行${}的時機要早于#{}。

不同類型注入

yml配置文件:

constants:
  test:
    string: test
    integer: 3
    list: a,b,c
    other: a.b.c
    map: "{key1:'var1', key2:'var2'}"

ps:以下所有類型注入都參考如上配置文件?。?!

String

@Value("${constants.test.string:test}")
private String value;

@Value("#{'test'}")
private String value;

Integer

@Value("${constants.test.integer:3}")
private Integer value;

@Value("#{3}")
private Integer value;

List

@Value("${constants.test.list:var1,var2,var3}")
private List<String> sList;

上面這種方式只能使用,逗號隔開,其他字符不會分割,不然會看成是一個整體的字符串

@Value("#{'${constants.test.other}'.split('.')}")
private List<String> sList;

#{}${}嵌套使用,其中${constants.test.other}是一個String類型的Bean,split方法是用來分割字符串,.為指定的分割符,當(dāng)然也可以換成其他字符,但一定要和${constants.test.other}配置的一致

Map

@Value("#{${constants.test.map}}")
private Map<String, Object> map;

注意上面的map解析中,一定要用"雙引號把map所對應(yīng)的constants.test.map的值包起來,要不然解析會失敗,導(dǎo)致不能轉(zhuǎn)成 Map。

異常信息:

Could not resolve placeholder 'constants.test.map' in value "#{${constants.test.map}}"

指定類型的Bean

@Configuration
public class Config {
	@Bean("myRestTemplate")
	public RestTemplate restTemplate() {
		return new RestTemplateBuilder().build();
	}
}
@Value("#{myRestTemplate}")
private RestTemplate restTemplate;

靜態(tài)屬性賦值

spring 不允許/不支持把值注入到靜態(tài)變量。

@Value("${constants.test.string}")
private static String value;

如上操作,最后變量value的結(jié)果是等于null值。

解決方法:

spring支持set方法注入,我們可以利用非靜態(tài)setter 方法注入靜態(tài)變量。

private static String value;

@Value("${constants.test.string}")
public void setValue(String value) {
	this.value = value;
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Logback配置文件這么寫(TPS提高10倍)

    Logback配置文件這么寫(TPS提高10倍)

    這篇文章主要介紹了Logback配置文件這么寫(TPS提高10倍),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java中Spring的Security使用詳解

    Java中Spring的Security使用詳解

    這篇文章主要介紹了Java中Spring的Security使用詳解,在web應(yīng)用開發(fā)中,安全無疑是十分重要的,選擇Spring Security來保護web應(yīng)用是一個非常好的選擇,需要的朋友可以參考下
    2023-07-07
  • JAVA日常開發(fā)中讀寫XML的方法詳解

    JAVA日常開發(fā)中讀寫XML的方法詳解

    這篇文章主要介紹了JAVA日常開發(fā)中讀寫XML的相關(guān)資料,詳細講解了在Java中如何使用DOM(文檔對象模型)和SAX(簡單API?for?XML)兩種方式讀取XML文件,以及如何使用DOM和JAXB(Java?Architecture?for?XML?Binding)兩種方式寫入XML文件,需要的朋友可以參考下
    2024-12-12
  • Spring Boot 分庫分表策略示例展示

    Spring Boot 分庫分表策略示例展示

    分庫分表是為了應(yīng)對大規(guī)模數(shù)據(jù)和高并發(fā)請求,提高系統(tǒng)的性能和可擴展性,以下是如何在 Spring Boot 中實現(xiàn)分庫分表的詳細策略,感興趣的朋友一起看看吧
    2024-08-08
  • httpclient getPoolEntryBlocking連接池方法源碼解讀

    httpclient getPoolEntryBlocking連接池方法源碼解讀

    這篇文章主要為大家介紹了httpclient getPoolEntryBlocking連接池方法源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java concurrency之Condition條件_動力節(jié)點Java學(xué)院整理

    Java concurrency之Condition條件_動力節(jié)點Java學(xué)院整理

    Condition的作用是對鎖進行更精確的控制。下面通過本文給大家分享Java concurrency之Condition條件的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-06-06
  • Gradle 6.6.1 安裝配置的詳細教程

    Gradle 6.6.1 安裝配置的詳細教程

    Gradle是一個基于Apache Ant和Apache Maven概念的項目自動化構(gòu)建開源工具。這篇文章主要介紹了Gradle 6.6.1 安裝配置的詳細教程,需要的朋友可以參考下
    2020-09-09
  • Java的動態(tài)代理模式之Cglib代理詳解

    Java的動態(tài)代理模式之Cglib代理詳解

    這篇文章主要介紹了Java的動態(tài)代理模式之Cglib代理詳解,Cglib代理也叫作?子類代理,它是在內(nèi)存中構(gòu)建一個子類對象從而實現(xiàn)對目標(biāo)對象功能擴展,?有些書也將Cglib代理歸屬到動態(tài)代理,需要的朋友可以參考下
    2023-11-11
  • java webservice上傳下載文件代碼分享

    java webservice上傳下載文件代碼分享

    這篇文章主要為大家詳細介紹了java webservice上傳下載文件代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 如何通過XML方式配置并實現(xiàn)Mybatis

    如何通過XML方式配置并實現(xiàn)Mybatis

    這篇文章主要介紹了如何通過XML方式配置并實現(xiàn)Mybatis,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11

最新評論