这令人困惑。我有一个属性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时它不会失败?
由于
答案 0 :(得分:1)
这意味着该属性未加载到测试用例的类路径中。尝试在上下文中加载属性文件以进行测试。