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

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

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

一 前言

本篇內容包括spring 運行時讀取配置文件的多種方式和SpEl表達式入門基礎;

二運行時讀取配置文件

spring 運行時讀取配置文件值提供了2種方式

屬性占位符(Property placeholder)。

Spring表達式語言(SpEL)

2.1 讀取外部配置文件

使用 @PropertySource 注解可以讀取導classpath下配置文件屬性;參數(shù)如下

  • value是個字符串數(shù)組;
  • ignoreResourceNotFound;如果設置為true, 配置文件未找到時不會報錯;
  • encoding;指定字符集

首先resource 目錄下創(chuàng)建配置文件zszxz.properties ; 內容如下

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"));
  }
}

最后通過測試類調用outputProperty()輸出配置文件中屬性的值

@RunWith(SpringJUnit4ClassRunner.class)//創(chuàng)建spring應用上下文
@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); 獲取值,沒有則使用默認值;
  • T getProperty(String key, Class var2); 獲取值,指定返回類型;
  • T getProperty(String key, Class var2, T defaultValue);獲取值,指定返回類型,指定默認值;
  • 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應用上下文
@ContextConfiguration(classes= EnvironmentProperty.class)//加載配置類
public class PropertyTest {
  @Autowired
  EnvironmentProperty environmentProperty;
  @Test
  public void testPoint(){
    // share
    environmentProperty.outputPoint();
  }
}

2.3 SpEl表達式

Spring表達式語言(Spring Expression Language,SpEL)是一種靈活的表達式語言,能夠以簡潔的方式將值裝配到bean屬性或者構造器參數(shù)中,此過程中能夠計算表達式獲取計算值;使用@Valjue注解時,SpEL表達式要放到“#{......}”之中;

獲取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);
  }

獲取屬性示例

注意點:username字段必須是public

  @Value("#{environmentProperty.username}")
  private String getField;

  @Test
  public void testField(){
    // 知識追尋者
    System.out.println(getField);
  }

獲取靜態(tài)方法示例

其中T()表示運算會得到一個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);
  }

支持運算符如下

  • 算術運算 + 、 - 、 * 、 / 、 % 、 ^
  • 比較運算 < 、 > 、 == 、 <= 、 >= 、 lt 、 gt 、 eq 、 le 、 ge
  • 邏輯運算 and 、 or 、 not 、 │
  • 條件運算 ?: (ternary) 、 ?: (Elvis)
  • 正則表達式 matches

更多內容讀者自行參考官網學習

https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/expressions.html

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

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

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

    一文快速掌握Java中的搜索算法和排序算法

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

    RocketMQ設計之同步刷盤

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論