bean定义中使用的Spring表达式语言(SpEL)中的条件
就Spring 3.0中使用的SpEL而言 我想问,是否可以(在bean definition.xml中)执行以下操作:bean定义中使用的Spring表达式语言(SpEL)中的条件,spring,conditional,expression,Spring,Conditional,Expression,就Spring 3.0中使用的SpEL而言 我想问,是否可以(在bean definition.xml中)执行以下操作: 有时。就像jstl一样 谢谢您的帮助。这不是使用spel的问题,而是更多的XML,因为您不能在XML中这样做(但xslt) 对于这个场景,合适的spring方式可能是结合BeanA和BeanB的“父”接口 您可以将参数(系统?特定于运行时?)传递给工厂,工厂将创建BeanA或BeanBXML Spring bean定义文件没有条件机制。 但是,这可能会奏效: <be
有时。就像jstl一样
谢谢您的帮助。这不是使用spel的问题,而是更多的XML,因为您不能在XML中这样做(但xslt) 对于这个场景,合适的spring方式可能是结合BeanA和BeanB的“父”接口
您可以将参数(系统?特定于运行时?)传递给工厂,工厂将创建BeanA或BeanBXML Spring bean定义文件没有条件机制。 但是,这可能会奏效:
<bean class="#{prop=='a' ? BeanA : BeanB}"/>
但即使这种方法奏效,它也不是最具可读性的方法。我的建议是使用不同的XML配置文件集,并根据一些全局设置选择它们。当然,您会将所有公共bean(即定义始终相同的bean)放在一个单独的文件中,并将其始终包含在内。环境配置文件/特定于环境的bean将在Spring 3.1中提供,该版本将很快发布,因此您可能需要等待
Spring3.0中没有对条件bean的内置支持。但是,这可以通过使用PropertyPlaceholderConfigurers和/或FactoryBeans来实现。看到这一点我真的很兴奋,但对于java命令行上定义的“-Dcommand.line.property=development”完全不起作用。不幸的是,您不能在类属性中使用SpEL。
<bean class="#{prop=='a' ? BeanA : BeanB}"/>