У меня есть следующая конфигурация в Spring applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<context:property-placeholder location="file:///absolute/path/to/foo.properties"/>
<context:property-placeholder location="file:///absolute/path/to/bar.properties"/>
<util:properties id="baz" location="file:///absolute/path/to/bar.properties"/>
Я могу поставить точки останова отладки там, где загружаются файлы свойств, и увидеть, что значения файлов свойств действительно загружены.
Но в моем bean-компоненте @Value("#{baz.myProp}")
разрешается, тогда как @Value("${myProp}")
взрывается в PropertyPlaceholderHelper
, так как PropertySourcesPropertyResolver
не может найти myProp
:
DEBUG [...] - Searching for key 'myProp' in [environmentProperties]
DEBUG [...] - Searching for key 'myProp' in [systemProperties]
DEBUG [...] - Searching for key 'myProp' in [systemEnvironment]
DEBUG [...] - Could not find key 'myProp' in any property source. Returning [null]
DEBUG [...] - Searching for key 'myProp' in [localProperties]
DEBUG [...] - Could not find key 'myProp' in any property source. Returning [null]
Почему это так и как я могу заставить его работать (используя разрешение заполнителя свойства $
вместо синтаксиса #
SpEL)?
Будут ли свойства, загруженные через context:property-placeholder
, отбрасываться/перезаписываться util:properties
(доступным только через ссылку baz
)?