У меня есть два конфигурационных файла xml с использованием property-placeholder
. У меня возникла проблема, когда порядок операторов импорта для этих двух файлов конфигурации будет влиять на SPEL в одном из файлов конфигурации.Spring Multiple Property Placeholder и SPEL order independent
конфиг-a.xml
<context:property-placeholder
location="classpath:dev/food.properties"
ignore-unresolvable="true" />
<bean id="foodNames" class="java.util.HashMap">
<constructor-arg>
<map key-type="com.my.project.Food"
value-type="java.lang.String">
<entry key="#{T(com.my.project.Food).SUSHI}"
value="${dynamodb.sushi:#{null}}" />
</map>
</constructor-arg>
</bean>
конфиг-b.xml
<context:property-placeholder
location="classpath:dev/animals.properties"
ignore-unresolvable="true" />
Если я импортировать config-a.xml
до того config-b.xml
значение правильно установлен в foodNames
карте. Но если я установил config-b.xml
до config-a.xml
, значение равно null
. Более наглядный пример можно увидеть ниже.
весна-диспетчерская-servlet.xml
// Value is properly set
<import resource="classpath:spring/config-a.xml" />
<import resource="classpath:spring/config-b.xml" />
// Value is null
<import resource="classpath:spring/config-b.xml" />
<import resource="classpath:spring/config-a.xml" />
Что я могу сделать, чтобы сделать его заказ независимым?
весна версия? вы нажмете эту ошибку: https://jira.spring.io/browse/SPR-9989 –
Весна 4.1.6, и да, это ошибка, с которой я сталкиваюсь – Hank
Не используйте XML-конфигурацию java и используйте '@ PropertySource', чтобы объявить ваши файлы. Таким образом, у вас есть одно свойство-placeholder и все еще возможность использовать несколько файлов свойств. –