java - Spring Multiple Property Placeholder and SPEL order independent -


i have 2 xml config files using property-placeholder. i'm having issue order of import statements these 2 config files effect spel in 1 of config files.

config-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> 

config-b.xml

<context:property-placeholder             location="classpath:dev/animals.properties"             ignore-unresolvable="true" /> 

if import config-a.xml before config-b.xml, value set in foodnames map. if set config-b.xml before config-a.xml, value null. more visual example can seen below.

spring-dispatcher-servlet.xml

// value set <import resource="classpath:spring/config-a.xml" /> <import resource="classpath:spring/config-b.xml" />  // value null <import resource="classpath:spring/config-b.xml" /> <import resource="classpath:spring/config-a.xml" /> 

what can make order independent?

the easiest (and suspect recommended approach) use java based configuration. in configuration define bean propertysourcesplaceholderconfigurer , use @propertysource annotations load property files.

@configuration @propertysource("classpath:dev/food.properties") public class configa {}  @configuration @propertysource("classpath:dev/animals.properties") public class configb {}  @configuration @componentscan("your-packages-here") public class rootconfig {     @bean     public static propertysourcesplaceholderconfigurer propertysourcesplaceholderconfigurer() {         return new propertysourcesplaceholderconfigurer();     } } 

something this. configuration classes loaded property files before replacement going happen.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -