【java从配置文件中读取参数】可以定义一个类中的私有变量,然后通过注解@Value(“${upload.param}“)的方式将配置参数值注入到这个参数中

java从配置文件中读取参数的方式

有的时候我们需要将一些固定的配置信息写到yml文件中去,然后在类中在读取,那么具体的有那些可以获取到yml配置文件中配置项的方法呢


配置参数

先写配置参数

#首先就得先在yml文件中配置参数
upload:
	param:"test"

一、@Value(“${}”)

基本内容:

在使用这个注解的时候,可能还需要使用 @PropertySource() 来指定配置文件的位置。他还有一个value属性,是字符串数组类型的,可以用来指定多个配置文件的路径。

第一中就是使用 @value(“{参数名}”)的方式,以上面得配置参数为例子,在具体的类中,可以定义一个类中的私有变量,然后通过注解@Value(“${upload.param}”)的方式将配置参数值注入到这个参数中:

@PropertySource({"配置文件路径1", "配置文件路径2"})
public class getParam{
	@Value("${upload.param:默认值}") // 如果值不存在可以指定默认值
	private String test;
}

拓展一下关于@Value()的知识。
@value()可以使用 ${} 和 #{} 两中方式进行参数注入;
${}: 注入的是配置文件中的属性
#{}: 使用的是 SpEI表达式 通常用来获取bean属性。

非配置文件的注入类型:

1、普通字符串		@Value("tesst")
2、操作系统属性
	获取系统环境变量 @Value("${环境变量名}")
	@Value("${path}")	@value("${classpath}") @Value("${java_home}")
3、表达式结果	@Value("#{100+200}")
4、其他bean属性
5、注入url资源

剖析

一般我们的@Value的数据的来源主要是从配置文件中。那么@Value数据来源于spring的什么地方呢?

其实在spring的框架中存在一个叫
javaorg.springframework.core.env.PropertySource
的类,他就是我们spring的配置源,其中以键值对的方式存储这我们的配置信息。
并且还有一个叫 Environment 的接口,其中在处理的过程中。
Environment 中的 resolvePlaceholders 解析方法用来解析我们在注解中 的参数 ${param} ,然后在propertySourceList 属性源列表中遍历拿到对应的propertySource对象,最后使用getPropertySources 方法来获取我们对应的属性。
修改数据源:
如果我们想改变@Value数据的来源,首先就要将配置信息包装为PropertySource对象

动态刷新:
要实现 @value的动态刷新可以使用spring的 @RefreshScope注解来实现这个

二、ConfigurationProperties

param:
	user:
		name: "zs"
		age: 23

// ConfigurationPropertes 可以检验数据 @Validatad
// prefix是配置文件中的浅醉
// name 绑定注入的参数ben的名字,
// havingValue 对比注入的和类的参数,相符合就返回true,配置类才会生效

@Component
@ConfigurationPropertes(prefix="param", name="user", havingValue="true")
@Validatad  
public class test{
private String name;
private String age;
}

不断学习

虽然有点慢

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值