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

Spring讀取配置文件屬性實(shí)現(xiàn)方法

 更新時間:2020年04月22日 09:40:43   作者:知識追尋者  
這篇文章主要介紹了Spring讀取配置文件屬性實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

一 前言

本篇內(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)文章

  • Go Java算法之比較版本號方法詳解

    Go Java算法之比較版本號方法詳解

    這篇文章主要為大家介紹了Go Java算法之比較版本號方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 聊聊SpringBoot使用Nacos進(jìn)行服務(wù)注冊發(fā)現(xiàn)與配置管理問題

    聊聊SpringBoot使用Nacos進(jìn)行服務(wù)注冊發(fā)現(xiàn)與配置管理問題

    Nacos支持基于DNS和基于RPC的服務(wù)發(fā)現(xiàn)(可以作為springcloud的注冊中心)、動態(tài)配置服務(wù)(可以做配置中心)、動態(tài)?DNS?服務(wù)。本文重點(diǎn)給大家介紹SpringBoot使用Nacos進(jìn)行服務(wù)注冊發(fā)現(xiàn)與配置管理,感興趣的朋友一起看看吧
    2022-01-01
  • 一文快速掌握J(rèn)ava中的搜索算法和排序算法

    一文快速掌握J(rèn)ava中的搜索算法和排序算法

    這篇文章主要為大家詳細(xì)介紹了Java中常用的搜索算法和排序算法的實(shí)現(xiàn),例如二分查找、冒泡排序、選擇排序等,文中的示例代碼講解詳細(xì),希望對大家有所幫助
    2023-04-04
  • RocketMQ設(shè)計之同步刷盤

    RocketMQ設(shè)計之同步刷盤

    這篇文章主要介紹了RocketMQ設(shè)計之同步刷盤,文章主要通過CommitLog的handleDiskFlush方法展開全文內(nèi)容,實(shí)現(xiàn)同步刷盤,下面文章詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-03-03
  • Java異常體系非正常停止和分類

    Java異常體系非正常停止和分類

    這篇文章主要介紹了Java異常體系非正常停止和分類,指的是程序在執(zhí)行過程中,出現(xiàn)的非正常的情況,最終會導(dǎo)致JVM的非正常停止更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-06-06
  • java實(shí)現(xiàn)Fibonacci算法實(shí)例

    java實(shí)現(xiàn)Fibonacci算法實(shí)例

    這篇文章主要介紹了java實(shí)現(xiàn)Fibonacci算法的方法,以實(shí)例形式較為詳細(xì)的分析了java實(shí)現(xiàn)Fibonacci算法的原理與相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • 深入了解Spring中Bean的作用域和生命周期

    深入了解Spring中Bean的作用域和生命周期

    這篇文章主要介紹了深入了解Spring中Bean的作用域和生命周期,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • spring容器初始化遇到的死鎖問題解決

    spring容器初始化遇到的死鎖問題解決

    這篇文章主要給大家介紹了關(guān)于spring容器初始化時候遇到的死鎖問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • java 驗(yàn)證碼的生成實(shí)現(xiàn)

    java 驗(yàn)證碼的生成實(shí)現(xiàn)

    這篇文章主要介紹了java 驗(yàn)證碼的生成實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • Java中常見的日期操作(取值、轉(zhuǎn)換、加減、比較)

    Java中常見的日期操作(取值、轉(zhuǎn)換、加減、比較)

    本文給大家介紹java中常見的日期操作,日期取值、日期轉(zhuǎn)換、日期加減、日期比較,對java日期操作相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12

最新評論