我正在尝试构建一个多模块项目,每个模块都会通过执行PropertyPlaceholderConfigure
属性来加载,然后我发现当我开始运行时没有注入属性。相反,它仍然使用默认属性,例如,我将主类中的输入表达式配置为Value("${esb.mas.path:/home/mas}")
,并在相应的模块属性文件中定义esb.mas.path=/home/vfs/mas
,但修改后的值从未使用过。
通过调试和跟踪代码,我发现了问题,但我仍然不确定这是否是Spring框架中的错误,在以下几行中,
public String org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(String value) {
String result = value;
for (StringValueResolver resolver : this.embeddedValueResolvers) {
if (result == null) {
return null;
}
result = resolver.resolveStringValue(result);
}
return result;
}
我注意到,如果无法捕获embeddedValueResolvers
列表的第一个位置的值,则在继续解析embeddedValueResolvers
时,它们将使用默认的/ home / mas,方法的参数为{{ 1}}是返回的默认值,即/ home / mas,未使用resolveStringValue
的实际值。
esb.mas.path