Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bean定义中使用的Spring表达式语言(SpEL)中的条件_Spring_Conditional_Expression - Fatal编程技术网

bean定义中使用的Spring表达式语言(SpEL)中的条件

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

就Spring 3.0中使用的SpEL而言

我想问,是否可以(在bean definition.xml中)执行以下操作:


有时。就像jstl一样


谢谢您的帮助。

这不是使用spel的问题,而是更多的XML,因为您不能在XML中这样做(但xslt)

对于这个场景,合适的spring方式可能是结合BeanA和BeanB的“父”接口


您可以将参数(系统?特定于运行时?)传递给工厂,工厂将创建BeanA或BeanB

XML 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}"/>