SpringBoot超詳細(xì)講解@Value注解
一、非配置文件注入
1、注入普通字符串
直接附在屬性名上,在 Bean 初始化時(shí),會(huì)賦初始值。
@Value("admin") private String name;
2、注入JAVA系統(tǒng)變量
@Value("#{systemProperties['os.name']}") private String osName;
這里的 osName
是 JAVA 的 System.getProperties()
方法獲取的JAVA環(huán)境變量 ,查看java系統(tǒng)變量的方法如下:
public String getproperties() { //獲取所有的屬性 Properties properties = System.getProperties(); //為了看看系統(tǒng)的屬性有幾個(gè),加了一個(gè)計(jì)數(shù)器 //遍歷所有的屬性 for (String key : properties.stringPropertyNames()) { System.out.println(key + "=" + properties.getProperty(key)); } return null; }
3、注入表達(dá)式
@Value("#{ T(java.lang.Math).random() * 100.0 }") private double randomNumber;
注:#{}
中寫(xiě)表達(dá)式。
4、注入其他Bean屬性
注入 beanInject
對(duì)象的屬性 another
。
@Value("#{beanInject.another}") private String fromAnotherBean;
5、注入文件資源
@Value("classpath:com/hry/spring/configinject/config.txt") private Resource resourceFile;
6、注入U(xiǎn)RL資源
@Value("http://www.baidu.com") private Resource testUrl;
二、通過(guò)配置文件注入
SpringBoot
通過(guò) @Value
注解將配置文件中的屬性注入到容器內(nèi)組件中(可用在 @Controller
、@Service
、@Configuration
、@Component
等Spring托管的類(lèi)中)
1、注入普通字符串
在 application.properties
配置文件中有如下配置:
name=admin
@Value
注入屬性:
@Value("${name}") public String name;
此時(shí),name
的值為 admin
。
當(dāng)配置文件中 name=
空時(shí),此時(shí)name屬性的值為 ""
。
我們可以為注入屬性設(shè)置默認(rèn)值:
@Value("${name:admin}") public String name;
2、注入基本類(lèi)型
在 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、注入數(shù)組類(lèi)型
在 application.properties
配置文件中有如下配置:
ids=1,2,3
@Value
注入屬性:
@Value("${ids}") public int[] arrIds;
注:當(dāng)配置文件中 ids
沒(méi)有對(duì)應(yīng)值時(shí),數(shù)組 arrIds
為 非null空數(shù)組
,長(zhǎng)度為 0
。
4、注入List類(lèi)型
在 application.properties
配置文件中有如下配置:
ids=1,2,3
@Value
注入屬性:
@Value("#{'${ids}'.split(',')}") public List<String> listIds;
注:當(dāng)配置文件中 ids
沒(méi)有對(duì)應(yīng)值時(shí),集合 listIds
長(zhǎng)度為 1
,存在值為:""
。
5、注入Map類(lèi)型
在 application.properties
配置文件中有如下配置:
user="{name:'admin', age:'23'}"
@Value
注入屬性:
@Value("#{${user}}") public Map<String, String> userMap;
#{}
表示使用 SpEL表達(dá)式
。
注:當(dāng)配置文件中 user
沒(méi)有對(duì)應(yīng)值是,啟動(dòng)報(bào)錯(cuò)。
到此這篇關(guān)于SpringBoot超詳細(xì)講解@Value注解的文章就介紹到這了,更多相關(guān)SpringBoot @Value注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決MyEclipse中Maven設(shè)置jdk版本jdk1.8報(bào)錯(cuò)問(wèn)題
今天安裝了jdk1.8、tomcat8、和maven3.5.2,弄好后在myeclipse新建了一個(gè)maven項(xiàng)目,項(xiàng)目默認(rèn)是jdk1.5,改成jdk1.8后項(xiàng)目報(bào)錯(cuò)2018-10-10Jpa 實(shí)現(xiàn)自動(dòng)更新表中的創(chuàng)建日期和修改時(shí)間
這篇文章主要介紹了Jpa 實(shí)現(xiàn)自動(dòng)更新表中的創(chuàng)建日期和修改時(shí)間,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01maven?scope?provided和runtime的例子說(shuō)明
這篇文章主要介紹了maven?scope?provided和runtime的例子說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Java使用easyExcel批量導(dǎo)入數(shù)據(jù)詳解
這篇文章主要介紹了Java使用easyExcel批量導(dǎo)入數(shù)據(jù)詳解,通常我們會(huì)提供一個(gè)模板,此模塊我們可以使用easyExcel導(dǎo)出數(shù)據(jù)生成的一個(gè)Excel文件當(dāng)作模板,提供下載鏈接,用戶(hù)在該文件內(nèi)填入規(guī)定的數(shù)據(jù)格式以后可以批量導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫(kù)中,需要的朋友可以參考下2023-08-08SpringBoot整合多個(gè)Mq服務(wù)做法詳解
SpringBoot整合rabbitmq很容易,但是整合的目的是為了使用,那要使用rabbitmq就要對(duì)其有一定的了解,不然容易整成一團(tuán)漿糊。因?yàn)檎f(shuō)到底,SpringBoot只是在封裝rabbitmq的API,讓其更容易使用而已,廢話(huà)不多說(shuō),讓我們一起整它2023-02-02Java手動(dòng)配置線(xiàn)程池過(guò)程詳解
這篇文章主要介紹了Java手動(dòng)配置線(xiàn)程池過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05