0
<bean id="foo" class="com.bla.Foo" />
<bean id="bar" class="com.bla.Bar" />
<bean id="channel" class="com.bla.Channel">
    <constructor-arg ref="#{(config.isFooEnabled()) ? foo : bar}"/>
</bean>

I get the following error:

Cannot resolve reference to bean '#{(config.isFooEnabled()) ? foo : bar}'

Nimrod Dayan
  • 3,050
  • 4
  • 29
  • 45

1 Answers1

2

The ref attribute value must be a string, not a reference itself, so, I would try returning foo or bar as a string, as in:

<constructor-arg ref="#{(config.isFooEnabled()) ? 'foo' : 'bar'}"/>

The spring beans engine will get the string returned by the expression, and resolve the reference.

Tomas Narros
  • 13,390
  • 2
  • 40
  • 56