【发布时间】:2021-08-17 21:59:08
【问题描述】:
我有一个 SpringBoot 应用程序,其中包含一组用于不同配置文件的 application.yaml 文件。 p>
application.yaml
application-dev.yaml
application-test.yaml
这些文件在类路径中,没有额外的配置来切换它们,除了在 intellij 的配置“活动配置文件”部分中更改配置文件。
我的一个 spring bean 依赖于属性
它有一个看起来像这样的构造函数
@Service
public class MyBean {
private static appUrl;
public MyBean(@Value("${application.app-url}") String appUrl){
MyBean.appUrl = Objects.requireNotNull(appUrl);
}
}
如果appUrl 在属性文件中不存在,那么整个过程fail bean 构造(从而导致应用程序无法启动)。
application.yaml 和 application-dev.yaml 属性看起来像这样
application:
app-url: http://someurl
我希望如果我从 application-dev.yaml 中删除 app-url,然后使用 dev 配置文件启动应用程序,它应该会失败。但是我发现,当该配置文件的属性丢失时,application.yaml 中的属性被取而代之。
两个问题:
- 如何防止这种“如果缺少,则从默认 application.yaml 中获取值”行为
- 是否有更好的方法来设置 MANDATORY 属性,以确保在缺少属性时应用程序在启动时失败
【问题讨论】:
-
您是否在 VM 选项中添加 add -Dspring.profiles.active=dev(或您的配置文件名称)?
标签: java spring spring-boot yaml