我试图在spring xml配置中的import语句中使用SpEL。 我正在努力做到这一点
<import resource="classpath*:/'#{'${enable.mass.quote.service:false}'=='true' ? 'massquoting' : 'quoting'}'-beans.xml"/>
但它不起作用,请提出任何建议
答案 0 :(得分:3)
其实你是对的:<import resource>
不支持SpEL,但它支持property-placeholders
:
// Resolve system properties: e.g. "${user.dir}"
location = environment.resolveRequiredPlaceholders(location);
因此,对于您的情况,它可能看起来像:
<import resource="classpath*:/${enable.mass.quote.service:quoting}-beans.xml"/>
其中enable.mass.quote.service
的值应为massquoting
。
如果您的病情较高,例如enable.mass.quote.service=true
,您应该依赖Spring Profiles
:
<beans profile="service">
<import resource="classpath*:/massquoting-beans.xml"/>
</beans>
<beans profile="nonService">
<import resource="classpath*:/quoting-beans.xml"/>
</beans>
答案 1 :(得分:0)
我也遇到了这个要求,事实证明答案是否定的。 SpEL或占位符不能在Spring导入语句中使用,因为导入发生在占位符/表达式被评估和替换之前。请参阅here。 Spring配置文件的答案只是Spring配置文件从Spring 3.1.x开始浮动,因此当使用旧版本的Spring时,可能需要承担编写自定义namespaces and their handlers的繁重任务。