properties注入值的方式

本文探讨了在Spring中管理可变配置文件的两种方式:@PropertySource和Properties类。当配置文件内容变化时,这两种方式都需要手动更新。为了解决这个问题,示例展示了如何利用Environment接口动态获取配置,实现配置文件的动态注入。通过将配置转换为Map,方便地管理和使用配置项,尤其适用于jar包内的配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方式一、Spring中通过@PropertySource({"classpath:/config/supportVersion.properties"})来指定文件后,再通过@Value("${versions}")的方式来进行注入。
方式二、通过Properties类来加载文件后,再通过该类的方法来进行获取。

但是,存在两个问题,方式一的话,如果说我们的配置文件增加了字段之后,我们还需要手动再添加一个@Value把新的值也注入进来,对于一些需要更新的配置文件来说,比较麻烦。
方式二的话,也能实现这种可变的Properties文件,但是,如果我们项目时打成jar包,并且该文件存在于jar包的话,获取文件路径也是比较麻烦的一一件事情。

那么如果遇到文件存在于jar包,并且内容可变的情况,我们怎么让配置文件注入呢?
类似于下面这个配置文件,a是大版本,a1是小版本,如果说需要增加一个大版本的话,就需要手动再添加一个@value去注入,比较麻烦

versions =a,b,c,d
a = a1,a2,....
b = b1,b2,...
c = c1,c2,...
...

我们可以用Environment来实现

@Component
@PropertySource({"classpath:/config/supportVersion.properties"})
public class SupportVersionConfig {

    @Value("${versions}")
    private String versions;

    @Autowired
    private Environment environment;

    public Map getVersions(){
        HashMap<String, List<String>> map = new HashMap<>();
        List<String> versionList = Arrays.asList(versions.split(","));
        for (String version : versionList) {
            map.put(version, Arrays.asList(environment.getProperty(version).split(",")));
        }
        System.out.println("map:" + map);
        return map;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值