我有几个配置文件,例如:
application.yaml
spring:
profiles:
active: default
application.someprop: common
application-prod.yaml
spring:
profiles:
active: prod
application.someprop: prod
我为此属性提供了一个配置类,并对其进行了验证,例如:
@Validated
@ConfigurationProperties(prefix = "application")
public class ApplicationProps {
@NotEmpty
private String someprop;
}
因此,当我使用默认配置文件运行应用程序时,当我从 application.yaml 配置中删除 application.someprop 属性时,验证工作正常带有 prod 配置文件 application-prod.yaml 且删除了 application.someprop 属性的应用,该值将从 application.yaml继承,并且验证无效。
缺少此属性的主要用例是配置错误。因此,我需要显示适当的可读日志来解决问题。
我认为我需要一些自定义属性spring Binder.class 定制,但是我找不到任何解决方案。
谢谢!
答案 0 :(得分:-1)
如果要对不同的配置文件使用不同的属性值,则需要如下提供不同的值。 spring.profile.active不会为特定配置文件定义属性,而是仅启用配置文件;并覆盖所有默认属性(如果您已明确指定它们)。如果删除为配置文件定义的属性,它将始终使用默认属性。
spring:
profiles:
active: prod
application.someprop: prop-default-value
---
spring:
profiles: prod
application.someprop: prop-prod-value
---
spring:
profiles: dev
application.someprop: prop-dev-value