springboot自定义配置文件数量是变化的,属性相同,只是值不一样,怎样绑定到实体类?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot自定义配置文件数量是变化的,属性相同,只是值不一样,怎样绑定到实体类?相关的知识,希望对你有一定的参考价值。

我的springboot项目有一个需求:
1.创建自定义配置文件并设置属性和值
2.自定义配置文件数量会根据生成环境增减,但文件中的属性不变,只是值不一样
网上许多加载配置文件并绑定实体类的案例,都是需要@PropertySource指定具体的配置文件。但是我的项目需要在打包后部署到生产环境,配置文件数量是变化的,应该怎样根据配置文件数量动态生成不同的实体类?

有一个思路,在主要的配置文件(比如:application.yml、bootstrap.yml)中设置好需要动态加载的配置文件。然后在启动时通过读取此配置自动去加载动态的配置文件,从而生成你需要的实体类。

大致效果,仅供参考,有更好的方案,欢迎指出:

效果图

代码

主配置文件

配置文件


完整代码:
@Component
public class LoadDynamicConfigure
@Value("$resourcesPath")
private String resourcesPath;

@Bean
public void loadConfig()
String[] yamlPathArray = resourcesPath.split(",");
for (String path : yamlPathArray)
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
//yaml.setResources(new FileSystemResource("classpath:config/user.yml"));//File路径引入
yaml.setResources(new ClassPathResource(path));//class路径引入
//转换成实体类
ConfigBean bean = (ConfigBean) JSONObject.toBean(JSONObject.fromObject(yaml.getObject()), ConfigBean.class);
//打印,查看效果
System.out.println("测试读取配置---->" + path + " --> " + JSONObject.fromObject(bean).toString());



参考技术A 这种情况可能需要用到一些更通用的配置库
比如cfg4j就是其中一个比较好的

以上是关于springboot自定义配置文件数量是变化的,属性相同,只是值不一样,怎样绑定到实体类?的主要内容,如果未能解决你的问题,请参考以下文章

微服务之springboot 自定义配置Application.properties文件

spring boot自定义配置文件数据源

springboot自定义配置文件

springboot自定义配置文件

springboot自定义配置文件

Spring Boot-日志配置(超详细)