I have the following structure of spring context files ( -> stands for ‘includes’) :
A1.xml -> B.xml & C.xml
A2.xml -> B.xml
C.xml defines a bean c
B.xml defines a bean b with a dependency on c
Obviously this fails for A2, because there is no c defined in the context A2.
How can I specify something like: if you have c in the context inject it in b otherwise just inject null?
I looked into Spring EL but
<property name="b" ref="#{ @c?:null}" />
Just gave me a NoSuchBeanDefinitionException for a name which seemed to be the value of b.toString() !?
Btw: I already know that this thing is messy as hell and should be cleaned up as fast as possible.
The #root object of the SpEL Expression is a BeanExpressionContext, you can invoke the
getObject()method on that context; it returns null if the bean is not declared…Note: you use
valuenotrefbecause it returns the bean, not the bean definition.Here’s the code from
getObject()