Условный оператор внутри Spring config
Как иметь условный оператор в конфигурационном файле spring
У меня есть String bean (b), значение которого зависит от значения свойства (a). a задается динамически на основе среды, в которой он выполняется.
if (a)
b="yes"
else
b="no"
Как это сделать в spring config?
Ответы
Ответ 1
Как сказал Райан, SpEL может помочь. Вы должны сделать что-то вроде этого в Spring xml:
<bean id="flag" class="java.lang.Boolean">
<constructor-arg value="#{ systemProperties['system.propery.flag'] ?: false }" />
</bean>
<bean id="bean" class="com.my.MyBean">
<property name="property" value="#{ flag ? 'yes' : 'no' }"/>
</bean>
Ответ 2
См. Spring Язык выражений для Spring 3+. В противном случае вы, вероятно, застряли в написании FactoryBean или что-то подобное.
Ответ 3
Попробуйте это... Это сработает.. Учитывая Roll, Location, имя находится в файле свойств, и я читаю его выше этой строки.
<bean id="Student" class="beans.Student">
<property name="name" value="#{ ${Roll}== 1 ? '${Location}' : '${name}' }"/>
</bean>
Ответ 4
ниже работает для меня.
системное свойство передано как java -Dflag = true -jar project.jar
<bean id="flag" class="java.lang.Boolean">
<constructor-arg value="#{ systemProperties['flag'] ?: false }" />
</bean>
<bean id="bean" class="com.my.MyBean">
<property name="property" value="#{ flag ? 'yes' : 'no' }"/>
</bean>