Spring读取配置文件属性实现方法

 更新时间:2020年04月22日 09:40:43   作者:知识追寻者  
这篇文章主要介绍了Spring读取配置文件属性实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一 前言

本篇内容包括spring 运行时读取配置文件的多种方式和SpEl表达式入门基础;

二运行时读取配置文件

spring 运行时读取配置文件值提供了2种方式

属性占位符(Property placeholder)。

Spring表达式语言(SpEL)

2.1 读取外部配置文件

使用 @PropertySource 注解可以读取导classpath下配置文件属性;参数如下

  • value是个字符串数组;
  • ignoreResourceNotFound;如果设置为true, 配置文件未找到时不会报错;
  • encoding;指定字符集

首先resource 目录下创建配置文件zszxz.properties ; 内容如下

zszxz.name = zszxz
zszxz.point = share

其次读取配置文件配置类如下

@Configuration
@PropertySource(value = {"classpath:zszxz.properties"},encoding = "UTF-8")
@Component
public class EnvironmentProperty {
  // 注入环境
  @Autowired
  private Environment environment;


  public void outputProperty(){
    System.out.println(environment.getProperty("zszxz.name"));
  }
}

最后通过测试类调用outputProperty()输出配置文件中属性的值

@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文
@ContextConfiguration(classes= EnvironmentProperty.class)//加载配置类
public class PropertyTest {
  @Autowired
  EnvironmentProperty environmentProperty;

  @Test
  public void test(){
    // zszxz
    environmentProperty.outputProperty();
  }
}

Tip 也可以使用@PropertySources 注解,其value是 @PropertySource类型的数组;

其中 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)//创建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属性或者构造器参数中,此过程中能够计算表达式获取计算值;使用@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()表示运算会得到一个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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java读写excel文件实现POI解析Excel的方法

    java读写excel文件实现POI解析Excel的方法

    在日常工作中,我们常常会进行Excel文件读写操作,这篇文章主要介绍了java读写excel文件实现POI解析Excel的方法,实例分析了java读写excel的技巧,非常具有实用价值,需要的朋友可以参考下
    2018-10-10
  • 图解红黑树及Java进行红黑二叉树遍历的方法

    图解红黑树及Java进行红黑二叉树遍历的方法

    红黑树问题是各大计算机考研命题以及面试算法题目中的热门,接下来我们为大家图解红黑树及Java进行红黑二叉树遍历的方法,需要的朋友可以参考下
    2016-05-05
  • Java Redis Redisson配置教程详解

    Java Redis Redisson配置教程详解

    这篇文章主要介绍了Java Redis Redisson配置教程,包括Session共享配置及其他Redisson的Config配置方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 23种设计模式(1) java单例模式

    23种设计模式(1) java单例模式

    这篇文章主要为大家详细介绍了23种设计模式之java单例模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Java实现拖拽文件上传dropzone.js的简单使用示例代码

    Java实现拖拽文件上传dropzone.js的简单使用示例代码

    本篇文章主要介绍了Java实现拖拽文件上传dropzone.js的简单使用示例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-07-07
  • 详解Spring Cloud Netflix Zuul中的速率限制

    详解Spring Cloud Netflix Zuul中的速率限制

    这篇文章主要介绍了详解Spring Cloud Netflix Zuul中的速率限制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • SpringBoot使用hutool-captcha实现验证码生成与验证

    SpringBoot使用hutool-captcha实现验证码生成与验证

    在springboot的登陆页面中为了防止机器大规模注册,机器暴力破解数据密码等危害,需要验证随机生成的验证码,本文主要介绍了SpringBoot使用hutool-captcha实现验证码生成与验证,感兴趣的可以了解一下
    2023-12-12
  • Java中的流式编程问题

    Java中的流式编程问题

    这篇文章主要介绍了Java中的流式编程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java中WeakHashMap的使用详解

    Java中WeakHashMap的使用详解

    这篇文章主要介绍了Java中WeakHashMap的使用详解,WeakHashMap是一种弱引用的Map,底层数据结构为数组链表,与HashMap相比,WeakHashMap的区别在于它的key存储为弱引用,在垃圾回收时,如果key没有被强引用所引用,那么key会被回收掉,需要的朋友可以参考下
    2023-09-09
  • java -jar指定外部配置文件操作步骤

    java -jar指定外部配置文件操作步骤

    这篇文章主要给大家介绍了关于java -jar指定外部配置文件的相关资料,需要的朋友可以参考下
    2023-11-11

最新评论