这令人困惑。我有一个属性 outerParameter,它在启动 tomcat 时在 VM 选项中是可选的。我在我的逻辑中通过以下方式使用它:
@Value("${outerParameter:paused}")
private String featureStatus = "active";
public String getFeatureStatus() {
return featureStatus;
}
当启动没有参数的tomcat时 - getFeatureStatus 给出“暂停”,正如预期的那样。当以定义的参数开始时 - 如预期的那样给出此参数值。令人困惑的部分是,当我为 getFeatureStatus 运行 JUnit 测试时,它无论如何都会给我“活动”而不是默认的“暂停”。测试的上下文不包含任何<context:property-placeholder../>
配置。
我试图了解我错过了什么,也许有人可以帮帮我
我发现了这一点: Spring @Value annotation not using defaults when property is not present ,这也可能是我的情况的答案。它说“可能由于缺少属性文件而导致属性占位符配置器的初始化失败,因此无法解析占位符”。但是如果是这样,为什么在没有定义outerParameter的情况下启动tomcat时它不会失败?
谢谢