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

网友投稿 915 2023-06-13

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

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 StrieDEMeng point;

public void outputPoint(){

System.out.println(point);

}

}

测试示例

@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文

@ContextConfiguration(classes= EnvironmentProperty.class)//加载配置类

pueDEMeblic 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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:敏捷交付- 让软件开发更高效快捷
下一篇:三分钟教你如何在IDEA中快速创建工程的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~