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

基于Spring boot @Value 注解注入屬性值的操作方法

 更新時(shí)間:2020年07月09日 08:44:23   作者:字母哥博客  
這篇文章主要介紹了結(jié)合SpEL使用@Value-基于配置文件或非配置的文件的值注入-Spring Boot的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本文主要介紹Spring @Value 注解注入屬性值的使用方法的分析,文章通過示例代碼非常詳細(xì)地介紹,對于每個(gè)人的學(xué)習(xí)或工作都有一定的參考學(xué)習(xí)價(jià)值

在使用spring框架的項(xiàng)目中,@Value是經(jīng)常使用的注解之一。其功能是將與配置文件中的鍵對應(yīng)的值分配給其帶注解的屬性。在日常使用中,我們常用的功能相對簡單。本文使您系統(tǒng)地了解@Value的用法。

@Value注入形式

  • 根據(jù)注入的內(nèi)容來源,@ Value屬性注入功能可以分為兩種:通過配置文件進(jìn)行屬性注入和通過非配置文件進(jìn)行屬性注入。
  • 非配置文件注入的類型如下:
  • 注入普通字符串注入操作系統(tǒng)屬性注射表達(dá)結(jié)果注入其他bean屬性注入文件資源注入U(xiǎn)RL資源

基于配置文件的注入

首先,讓我們看一下配置文件中的數(shù)據(jù)注入,無論它是默認(rèn)加載的application.properties還是自定義my.properties文檔(需要@PropertySource額外加載)。例如:application.properties屬性值以以下形式定義:

user.name=admin

my.properties配置文件中定義的屬性如下:

user.password=pwd123

然后,在bean中使用@Value,如下所示:

@PropertySource("classpath:my.properties")
@RestController
public class ValueController {

 /**
 *Get in application.properties Properties configured in
 */
 @Value("${user.name}")
 private String name;

 /**
 *Get in my.properties Configuration properties in
 */
 @Value("${user.password}")
 private String password;

}

區(qū)別在于,在spring boot項(xiàng)目中,如果使用my.properties文件,則需要通過類中的@ PropertySource導(dǎo)入配置文件,而application.properties中的屬性將自動加載。

同時(shí),您不僅可以通過@Value注入單個(gè)屬性,還可以采用數(shù)組和列表的形式。例如,配置如下:

tools=car,train,airplane

可以通過以下方式注入它:

/**
 *Injection array (automatically split according to ",")
 */
@Value("${tools}")
private String[] toolArray;

/**
 *Injection list form (automatic segmentation based on "," and)
 */
@Value("${tools}")
private List<String> toolList;

默認(rèn)情況下,spring將以“,”分割,并將其轉(zhuǎn)換為相應(yīng)的數(shù)組或列表。

基于非配置文件的注入

在使用示例說明基于非配置文件注入屬性的實(shí)例之前,讓我們看一下SpEl。

Spring Expression Language是Spring表達(dá)式語言,可以在運(yùn)行時(shí)查詢和操作數(shù)據(jù)。使用#{…}作為操作符號,大括號中的所有字符均視為SpEl。

讓我們看一下特定實(shí)例場景的應(yīng)用:

/**
 *實(shí)例化一個(gè)字符串,并賦予默認(rèn)值
 */
@Value
private String wechatSubscription;

/**
 *讀取系統(tǒng)的環(huán)境變量
 */
@Value("#{systemProperties['os.name']}")
private String systemPropertiesName;

/**
 *注入表達(dá)式計(jì)算結(jié)果
 */
@Value("#{ T(java.lang.Math).random() * 100.0 }")
private double randomNumber;

/**
 *讀取一個(gè)bean:config的tool屬性并注入
 */
@Value("#{config.tool}")
private String tool;

/**
 *將words用“|”分隔為字符串?dāng)?shù)組
 */
@Value("#{'${words}'.split('\|')}")
private List<String> numList;

/**
 *注入一個(gè)文件資源
 */
@Value("classpath:config.xml")
private Resource resourceFile;

/**
 *注入 URL 資源
 */
@Value("http://www.choupangxia.com")
private URL homePage;

上面的示例顯示了以下方案的使用:

  • 直接注入字符串等效于實(shí)例化時(shí)直接初始化字符串。初始化空串
  • 通過#{}注入系統(tǒng)變量。
  • 表達(dá)式計(jì)算結(jié)果通過#{}注入。
  • 通過#{}注入其他bean的屬性。
  • 通過{}和$ {}的組合注入屬性,然后拆分。
  • 注入文件資源,并將相應(yīng)的字符串值轉(zhuǎn)換為相應(yīng)的資源文件。
  • 注入U(xiǎn)RL資源并將相應(yīng)的URL字符串轉(zhuǎn)換為URL

默認(rèn)值注入

無論使用#{}(SpEL)還是$ {}進(jìn)行屬性注入,當(dāng)無法獲得相應(yīng)的值時(shí),都需要設(shè)置默認(rèn)值,可以通過以下方式進(jìn)行設(shè)置。

/**
 *If IP is not configured in the property, the default value is used
 */
@Value("${ip:127.0.0.1}")
private String ip;

/**
 *If the value of port is not obtained in the system properties, 8888 is used.
 */
@Value("#{systemProperties['port']?:'8888'}")
private String port;

$ {}中直接使用“:”來設(shè)置未定義或空值的默認(rèn)值,而#{}則需要使用“?:”來設(shè)置未設(shè)置屬性的默認(rèn)值。

總結(jié)

到此這篇關(guān)于結(jié)合SpEL使用@Value-基于配置文件或非配置的文件的值注入-Spring Boot的文章就介紹到這了,更多相關(guān)Spring @Value 注解注入屬性值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操作

    JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操

    這篇文章主要介紹了JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • javaweb上傳下載實(shí)例完整版解析(下)

    javaweb上傳下載實(shí)例完整版解析(下)

    這篇文章主要為大家詳細(xì)解析了javaweb上傳下載實(shí)例,本文重點(diǎn)在于文件下載功能的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java Web開發(fā)項(xiàng)目中中文亂碼解決方法匯總

    Java Web開發(fā)項(xiàng)目中中文亂碼解決方法匯總

    這篇文章主要為大家詳細(xì)匯總了Java Web開發(fā)項(xiàng)目中中文亂碼的解決方法,分析了5種Java Web中文亂碼情況,感興趣的小伙伴們可以參考一下
    2016-05-05
  • IDEA操作MongoDB及安全認(rèn)證方式

    IDEA操作MongoDB及安全認(rèn)證方式

    這篇文章主要介紹了IDEA操作MongoDB及安全認(rèn)證方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java設(shè)計(jì)模式之建造者模式

    Java設(shè)計(jì)模式之建造者模式

    這篇文章介紹了Java設(shè)計(jì)模式之建造者模式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 一文詳解jvm中的引用類型

    一文詳解jvm中的引用類型

    在Java中對象以引用來指向JVM的內(nèi)存區(qū)塊,這里我們總結(jié)了強(qiáng)引用、軟引用、弱引用和假象引用(幽靈引用),下面這篇文章主要給大家介紹了關(guān)于jvm中引用類型的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • 深入理解Spring中的Lookup(方法注入)

    深入理解Spring中的Lookup(方法注入)

    “Lookup方法”可以使Spring替換一個(gè)bean原有的,獲取其它對象具體的方法,并自動返回在容器中的查找結(jié)果。下面這篇文章主要給大家介紹了關(guān)于Spring中Lookup(方法注入)的相關(guān)資料,需要的朋友可以參考下
    2018-05-05
  • idea創(chuàng)建的idea項(xiàng)目時(shí)springframework出現(xiàn)紅色的原因和解決方法

    idea創(chuàng)建的idea項(xiàng)目時(shí)springframework出現(xiàn)紅色的原因和解決方法

    當(dāng)使用 IntelliJ IDEA 創(chuàng)建 Spring Framework 項(xiàng)目時(shí),springframework 出現(xiàn)紅色可能是因?yàn)橄嚓P(guān)的 Spring Framework 依賴沒有正確加載或項(xiàng)目的配置有問題,本文給大家介紹了一些常見的原因和解決方法,需要的朋友可以參考下
    2023-09-09
  • Java幸運(yùn)28系統(tǒng)搭建數(shù)組的使用實(shí)例詳解

    Java幸運(yùn)28系統(tǒng)搭建數(shù)組的使用實(shí)例詳解

    在本篇文章里小編給大家整理了關(guān)于Java幸運(yùn)28系統(tǒng)搭建數(shù)組的使用實(shí)例內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。
    2019-09-09
  • Spring啟動后獲取所有擁有特定注解的Bean實(shí)例代碼

    Spring啟動后獲取所有擁有特定注解的Bean實(shí)例代碼

    這篇文章主要介紹了Spring啟動后獲取所有擁有特定注解的Bean實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評論