Ответ 1
Да, это ожидаемое поведение. <context:property-placeholder>
создает BeanFactoryPostProcessor
, который применяется для каждого контекста. Таким образом, вам понадобится постпроцессор в дочернем контексте.
Типичный прецедент: у меня есть applicationContext.xml
и dispatcher-servlet.xml
. В родительском контексте (applicationContext.xml
) у меня есть:
<context:property-placeholder location="classpath:application.properties" />
Однако свойства, загруженные им, недоступны для веб-контекста - ни в xml, ни при использовании @Value
. (Они просто не разрешены, и выражение (${varName}
) устанавливается как значение вместо)
Я работал над этим, добавив <context:property-placeholder>
в dispatcher-servlet.xml
, но я задался вопросом:
Да, это ожидаемое поведение. <context:property-placeholder>
создает BeanFactoryPostProcessor
, который применяется для каждого контекста. Таким образом, вам понадобится постпроцессор в дочернем контексте.