Spring讀取配置文件屬性實(shí)現(xiàn)方法
一 前言
本篇內(nèi)容包括spring 運(yùn)行時讀取配置文件的多種方式和SpEl表達(dá)式入門基礎(chǔ);
二運(yùn)行時讀取配置文件
spring 運(yùn)行時讀取配置文件值提供了2種方式
屬性占位符(Property placeholder)。
Spring表達(dá)式語言(SpEL)
2.1 讀取外部配置文件
使用 @PropertySource 注解可以讀取導(dǎo)classpath下配置文件屬性;參數(shù)如下
- value是個字符串?dāng)?shù)組;
- ignoreResourceNotFound;如果設(shè)置為true, 配置文件未找到時不會報錯;
- encoding;指定字符集
首先resource 目錄下創(chuàng)建配置文件zszxz.properties ; 內(nèi)容如下
zszxz.name = zszxz
zszxz.point = share
其次讀取配置文件配置類如下
@Configuration
@PropertySource(value = {"classpath:zszxz.properties"},encoding = "UTF-8")
@Component
public class EnvironmentProperty {
// 注入環(huán)境
@Autowired
private Environment environment;
public void outputProperty(){
System.out.println(environment.getProperty("zszxz.name"));
}
}
最后通過測試類調(diào)用outputProperty()輸出配置文件中屬性的值
@RunWith(SpringJUnit4ClassRunner.class)//創(chuàng)建spring應(yīng)用上下文
@ContextConfiguration(classes= EnvironmentProperty.class)//加載配置類
public class PropertyTest {
@Autowired
EnvironmentProperty environmentProperty;
@Test
public void test(){
// zszxz
environmentProperty.outputProperty();
}
}
Tip 也可以使用@PropertySources 注解,其value是 @PropertySource類型的數(shù)組;
其中 EnvironmentProperty 獲取主要屬性方法如下
- String getProperty(String key); 通過key 取值
- String getProperty(String key, String defaultValue); 獲取值,沒有則使用默認(rèn)值;
- T getProperty(String key, Class var2); 獲取值,指定返回類型;
- T getProperty(String key, Class var2, T defaultValue);獲取值,指定返回類型,指定默認(rèn)值;
- String getRequiredProperty(String key) ; key必須為非空否則拋出IllegalStateException異常
2.2 使用占位符獲取配置文件
使用注解@Value獲取配置文件屬性值; 其中值使用占位符("${........}")方式;
配置類示例
@Configuration
@PropertySource(value = {"classpath:zszxz.properties"},encoding = "UTF-8")
@Component
public class EnvironmentProperty {
@Value("${zszxz.point}")
private String point;
public void outputPoint(){
System.out.println(point);
}
}
測試示例
@RunWith(SpringJUnit4ClassRunner.class)//創(chuàng)建spring應(yīng)用上下文
@ContextConfiguration(classes= EnvironmentProperty.class)//加載配置類
public class PropertyTest {
@Autowired
EnvironmentProperty environmentProperty;
@Test
public void testPoint(){
// share
environmentProperty.outputPoint();
}
}
2.3 SpEl表達(dá)式
Spring表達(dá)式語言(Spring Expression Language,SpEL)是一種靈活的表達(dá)式語言,能夠以簡潔的方式將值裝配到bean屬性或者構(gòu)造器參數(shù)中,此過程中能夠計算表達(dá)式獲取計算值;使用@Valjue注解時,SpEL表達(dá)式要放到“#{......}”之中;
獲取bean示例
@Value("#{environmentProperty}")
private EnvironmentProperty getBean;
@Test
public void testBean(){
// com.zszxz.property.EnvironmentProperty$$EnhancerBySpringCGLIB$$8e54e11f@1d9b7cce
System.out.println(getBean);
}
獲取方法示例
@Value("#{environmentProperty.getStr()}")
private String getMethod;
@Test
public void testMethod(){
// 知識追尋者
System.out.println(getMethod);
}
獲取屬性示例
注意點(diǎn):username字段必須是public
@Value("#{environmentProperty.username}")
private String getField;
@Test
public void testField(){
// 知識追尋者
System.out.println(getField);
}
獲取靜態(tài)方法示例
其中T()表示運(yùn)算會得到一個Class對象;
@Value("#{T(java.lang.Math).random()}")
private double number;
@Test
public void testStatic() {
// 0.9205474938572363
System.out.println(number);
}
非空判定示例
其中? 表示非空判定
@Value("#{environmentProperty.username?.toString()}")
private String notNull;
@Test
public void testNotNUll() {
// 知識追尋者
System.out.println(notNull);
}
支持運(yùn)算符如下
- 算術(shù)運(yùn)算 + 、 - 、 * 、 / 、 % 、 ^
- 比較運(yùn)算 < 、 > 、 == 、 <= 、 >= 、 lt 、 gt 、 eq 、 le 、 ge
- 邏輯運(yùn)算 and 、 or 、 not 、 │
- 條件運(yùn)算 ?: (ternary) 、 ?: (Elvis)
- 正則表達(dá)式 matches
更多內(nèi)容讀者自行參考官網(wǎng)學(xué)習(xí)
https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/expressions.html
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java讀寫excel文件實(shí)現(xiàn)POI解析Excel的方法
在日常工作中,我們常常會進(jìn)行Excel文件讀寫操作,這篇文章主要介紹了java讀寫excel文件實(shí)現(xiàn)POI解析Excel的方法,實(shí)例分析了java讀寫excel的技巧,非常具有實(shí)用價值,需要的朋友可以參考下2018-10-10
Java實(shí)現(xiàn)拖拽文件上傳dropzone.js的簡單使用示例代碼
本篇文章主要介紹了Java實(shí)現(xiàn)拖拽文件上傳dropzone.js的簡單使用示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07
詳解Spring Cloud Netflix Zuul中的速率限制
這篇文章主要介紹了詳解Spring Cloud Netflix Zuul中的速率限制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
SpringBoot使用hutool-captcha實(shí)現(xiàn)驗(yàn)證碼生成與驗(yàn)證
在springboot的登陸頁面中為了防止機(jī)器大規(guī)模注冊,機(jī)器暴力破解數(shù)據(jù)密碼等危害,需要驗(yàn)證隨機(jī)生成的驗(yàn)證碼,本文主要介紹了SpringBoot使用hutool-captcha實(shí)現(xiàn)驗(yàn)證碼生成與驗(yàn)證,感興趣的可以了解一下2023-12-12

