国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:44日期:2023-08-28 11:01:58

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

在使用spring框架的項(xiàng)目中,@Value是經(jīng)常使用的注解之一。其功能是將與配置文件中的鍵對(duì)應(yīng)的值分配給其帶注解的屬性。在日常使用中,我們常用的功能相對(duì)簡單。本文使您系統(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')@RestControllerpublic 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中的屬性將自動(dòng)加載。

同時(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ù)。使用#{…}作為操作符號(hào),大括號(hào)中的所有字符均視為SpEl。

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

/** *實(shí)例化一個(gè)字符串,并賦予默認(rèn)值 */@Valueprivate 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)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 一本久道综合久久精品 | 欧美一级高清片在线 | www.夜夜骑.com | 欧美日韩一区二区三区久久 | 国产成人综合亚洲亚洲欧美 | 在线观看免费亚洲 | 高清国产在线播放成人 | 国内精品久久久久久久影视麻豆 | 波多野结衣一区二区三区在线观看 | 亚洲国产中文字幕 | 久久久综合视频 | 成人精品一区二区久久久 | 看一级毛片 | 怡红院视频在线观看 | 美女扒开腿让男人桶个爽 | 欧美va免费大片 | 欧美激情精品久久久久久久久久 | 免费看日韩欧美一级毛片 | 看中国毛片 | 大视频在线爱爱爱爱 | fc2ppv在线观看| 手机看片国产 | 亚洲欧洲久久久精品 | 香港毛片免费观看 | 国产在线不卡午夜精品2021 | 国产成人久久精品一区二区三区 | 精品视频久久 | 国产精品视频久久久久久 | 久操影视 | 国产亚洲精品资源一区 | 美女被免费网站视频软件 | 热热涩热热狠狠色香蕉综合 | 国产亚洲精品高清在线 | 欧美一级专区免费大片俄罗斯 | 美日韩黄色片 | 免费看又黄又爽又猛的网站 | 欧美一级毛片香蕉网 | 91亚洲欧美 | 国产精品久久一区二区三区 | 成人公开免费视频 | 午夜爽爽视频 |