我使用eval([](char const *c) { FUNCTOR.m_function(c); });
有两个xml配置文件。我遇到一个问题,这两个配置文件的import语句的顺序将影响其中一个配置文件中的SPEL。
配置-A.XML
property-placeholder
配置-B.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>
如果我在<context:property-placeholder
location="classpath:dev/animals.properties"
ignore-unresolvable="true" />
之前导入config-a.xml
,则会在config-b.xml
地图中正确设置该值。但如果我在foodNames
之前设置config-b.xml
,则值为config-a.xml
。下面可以看到一个更直观的例子。
弹簧调度-servlet.xml中
null
如何使其独立订购?
答案 0 :(得分:1)
最简单的(我怀疑推荐的方法)是使用基于java的配置。在此配置中,为PropertySourcesPlaceholderConfigurer
定义bean并使用@PropertySource
注释来加载属性文件。
@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();
}
}
像这样的东西。在替换将要发生之前,将加载所有配置类以及属性文件。