【发布时间】:2019-03-07 08:09:08
【问题描述】:
是否可以为不同的配置文件构建环境(具有中继属性源)?
例如:当应用程序使用 prod 配置文件运行时,我希望拥有用于 dev 配置文件的配置 bean。
我正在使用 Spring Boot 2(带有新的 Binder API)
感谢任何帮助。
P.S.:我想要相同的配置对象,但具有配置文件特定的值。
示例: 应用程序.yml
spring:
profiles: dev
server:
address: 127.0.0.1
---
spring:
profiles: prod
server:
address: 192.168.1.120
配置 bean:
@Component
@ConfigurationProperties("server")
@Validated
public static class ServerConf {
private final InetAddress address;
...
}
主要目标是将 ServerConf 作为与活动配置文件相关的 bean 和与特定配置文件相关的 ServerConf 类的对象集或 ServerConfProd、ServerConfDev 等 bean 集
理想情况下,我正在寻找类似的东西:
StandardEnvironment env = new StandardEnvironment();
env.setActiveProfiles("prod");
MutablePropertySources propertySources = env.getPropertySources();
propertySources.addLast(new ResourcePropertySource("classpath:application-prod.properties"));
propertySources.addLast(new ResourcePropertySource("classpath:application.properties"));
ServerConf prodServerConf = Binder.get(env).bind("server", Bindable.of(ServerConf.class)).get();
它可以工作,但有很多缺点:验证不起作用,手动设置属性源...
【问题讨论】:
-
你可以在两个不同的端口上配置相同的值
-
如果我明白你在看
@Profile("dev")注释 -
谢谢,但不,情况有点复杂
标签: spring-boot