最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

@Value注入形式

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

基于配置文件的注入

首先,讓我們看一下配置文件中的數(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項目中,如果使用my.properties文件,則需要通過類中的@ PropertySource導(dǎo)入配置文件,而application.properties中的屬性將自動加載。

同時,您不僅可以通過@Value注入單個屬性,還可以采用數(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ù)組或列表。

基于非配置文件的注入

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

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

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

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

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

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

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

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

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

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

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

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

默認(rèn)值注入

無論使用#{}(SpEL)還是$ {}進行屬性注入,當(dāng)無法獲得相應(yīng)的值時,都需要設(shè)置默認(rè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)文章

  • 必須掌握的十個Lambda表達(dá)式簡化代碼提高生產(chǎn)力

    必須掌握的十個Lambda表達(dá)式簡化代碼提高生產(chǎn)力

    這篇文章主要為大家介紹了必須掌握的十個Lambda表達(dá)式來簡化代碼提高生產(chǎn)力,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Java解決xss轉(zhuǎn)義導(dǎo)致轉(zhuǎn)碼的問題

    Java解決xss轉(zhuǎn)義導(dǎo)致轉(zhuǎn)碼的問題

    跨站腳本攻擊XSS是最普遍的Web應(yīng)用安全漏洞,本文主要介紹了Java解決xss轉(zhuǎn)義導(dǎo)致轉(zhuǎn)碼的問題,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • MyBatis動態(tài)SQL表達(dá)式詳解

    MyBatis動態(tài)SQL表達(dá)式詳解

    動態(tài)SQL可以省略很多拼接SQL的步驟,使用類似于JSTL方式,下面這篇文章主要給大家介紹了關(guān)于Mybatis動態(tài)SQL特性的相關(guān)資料,文字通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • EVCache緩存在Spring Boot中的實戰(zhàn)示例

    EVCache緩存在Spring Boot中的實戰(zhàn)示例

    這篇文章主要介紹了EVCache緩存在Spring Boot中的實戰(zhàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 淺析 ArrayList 和 LinkedList 有什么區(qū)別

    淺析 ArrayList 和 LinkedList 有什么區(qū)別

    ArrayList 和 LinkedList 有什么區(qū)別,是面試官非常喜歡問的一個問題。今天通過本文給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧
    2020-10-10
  • Java、JavaScript、Oracle、MySQL中實現(xiàn)的MD5加密算法分享

    Java、JavaScript、Oracle、MySQL中實現(xiàn)的MD5加密算法分享

    這篇文章主要介紹了Java、JavaScript、Oracle、MySQL中實現(xiàn)的MD5加密算法分享,需要的朋友可以參考下
    2014-09-09
  • Spring中的@PostConstruct注解使用方法解析

    Spring中的@PostConstruct注解使用方法解析

    這篇文章主要介紹了Spring中的@PostConstruct注解使用方法解析,@PostConstruct注解是用來處理在@Autowired注入屬性后init()方法之前,對一些零散的屬性進行賦值的注解,需要的朋友可以參考下
    2023-11-11
  • Mybatis應(yīng)用mysql存儲過程查詢數(shù)據(jù)實例

    Mybatis應(yīng)用mysql存儲過程查詢數(shù)據(jù)實例

    下面小編就為大家分享一篇Mybatis應(yīng)用mysql存儲過程查詢數(shù)據(jù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Java中的Object類詳細(xì)解讀

    Java中的Object類詳細(xì)解讀

    這篇文章主要介紹了Java中的Object類詳細(xì)解讀,java.lang.Object是類層次結(jié)構(gòu)的根類,即所有其它類的父類,每個類都使用 Object 作為超類,需要的朋友可以參考下
    2023-11-11
  • SpringBoot自動裝配之@Enable深入講解

    SpringBoot自動裝配之@Enable深入講解

    這篇文章主要介紹了SpringBoot自動裝配之@Enable,SpringBoot中提供了很多Enable開頭的注解,這些注解都是用于動態(tài)啟用某些功能的。而其底層原理是使用@Import注?解導(dǎo)入一些配置類,實現(xiàn)Bean的動態(tài)加載
    2023-01-01

最新評論

揭西县| 扎鲁特旗| 延边| 环江| 平和县| 金山区| 且末县| 库尔勒市| 怀安县| 张家川| 无棣县| 巴马| 鄂伦春自治旗| 遵义县| 清徐县| 海林市| 儋州市| 东莞市| 栖霞市| 凭祥市| 万荣县| 育儿| 巴彦淖尔市| 会理县| 隆尧县| 获嘉县| 景德镇市| 麟游县| 合山市| 汕头市| 四子王旗| 玛曲县| 昌图县| 长顺县| 佛教| 思南县| 霸州市| 财经| 杨浦区| 贺州市| 绥德县|