java加载多个properties文件_java – 加载多个YAML文件(使用@ConfigurationProperties?)

使用

Spring Boot 1.3.0.RELEASE

我有几个yaml文件描述了程序的几个实例.我现在想要将所有这些文件解析为List< Program> (Map,无论如何),所以我稍后可以在所有程序中搜索给定条件的最合适的实例.

我非常喜欢使用@ConfigurationProperties的方法,它对于单个yaml文件工作得很好,但我还没有找到使用该方法读取目录中所有文件的方法.

当前的方法适用于单个文件:

programs/program1.yml

name: Program 1

minDays: 4

maxDays: 6

可以阅读

@Configuration

@ConfigurationProperties(locations = "classpath:programs/program1.yml", ignoreUnknownFields = false)

public class ProgramProperties {

private Program test; //Program is a POJO with all the fields in the yml.

//getters+setters

我尝试将位置更改为列出所有文件位置的数组= {“classpath:programs / program1.yml”,“classpath:programs / program2.yml”}以及使用locations =“classpath:programs / *.yml “,但仍然只加载第一个文件(数组方法)或根本不加载(通配符方法).

所以,我的问题是,Spring Boot中最好的方法是在classpath目录中加载一堆yaml文件并将它们解析为(List of)POJO,这样它们可以在Controller中自动装配?我是否需要直接使用Snakeyaml,还是有一种我还没有找到的集成机制?

编辑:

一种工作方法是手动完成:

private static final Yaml yaml = new Yaml(new Constructor(Program.class));

private static final ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

try {

for (Resource resource : resolver.getResources("/programs/*.yml")) {

Object data = yaml.load(resource.getInputStream());

programList.add((Program) data);

}

}

catch (IOException ioe) {

logger.error("failed to load resource", ioe);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值