一个典型的用例:我有 applicationContext.xml
和 dispatcher-servlet.xml
.在父上下文( applicationContext.xml
)中,我有:
<context:property-placeholder location="classpath:application.properties" />
但是,由它加载的属性不能被 web 上下文访问 - 既不是在 xml 中,也不是使用 @Value
. (它们只是没有被解析,而是将表达式( ${varName}
)设置为值)
我通过添加 <context:property-placeholder>
来解决这个问题至dispatcher-servlet.xml
也是,但我想知道是否:
- 这是预期行为
- 没有更好的方法将属性公开给子上下文。
最佳答案
是的,这是预期的行为。 <context:property-placeholder>
创建一个 BeanFactoryPostProcessor
这是在每个上下文的基础上应用的。因此,无论如何,您都需要在子上下文中使用后处理器。
关于spring - <上下文:property-placeholder> properties not accessible to the child (web) context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3816617/