0
我認爲在使用@Value註解和默認值時會出現一些問題。我在變量上使用以下注釋。我希望看到的變量propAVar但是與propA的屬性值設置,它始終設置爲默認值-10@兒童上下文中的值註釋
@Component
public class SomeClass {
@Value("${propA:-10}")
public String propAVar;
}
我的父母和孩子環境中使用PropertyPlaceholderConfigurer。子上下文具有上下文:掃描SomeClass的組件掃描元素。在深入研究Spring代碼時,我發現了下面的問題可能出現的方法。
public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport implements ConfigurableBeanFactory {
//...
public String resolveEmbeddedValue(String value) {
String result = value;
for (StringValueResolver resolver : this.embeddedValueResolvers) {
if (result == null) {
return null;
}
result = resolver.resolveStringValue(result);
}
return result;
}
//...
}
看起來像resolveEmbeddedValue將通過所有embeddedValueResolvers並確定該屬性的值。但是,如果我們定義一個默認值,它將在第一個embeddedValueResolvers中查找該屬性,並返回默認值(如果在那裏未找到)。它不應該通過所有的解析器,然後返回默認值?想提一下,這工作正常,沒有默認值。
如果有人能幫助解釋@Value在父子上下文情況下具有默認值的預期行爲,那將會很棒。在spring forum]