Ak je to v projekte takto uvedené, tak to nemôže fungovať. Atribút ref sa musí resolvnúť na String reprezentujúci názov beanu. Preto Spring protestuje, že sa nedá nájsť bean s identifikátorom null (teda "n, u, l, l").
Teraz opomeniem situáciu, že toto sa rieši úplne inak (napr. profily), ale ak sa chceme kumulovať divné riešenia na divné riešenia, tak mu tam ten bean môžeme vyrobiť :-)
<bean class="cz.root.foo.FooService">
<property name="foo" ref="#{ '${fooproperty:false}' ? 'beanid' : null }" />
</bean>
<bean id="beanid" class="cz.root.foo.Foo"/>
<bean id="null" class="cz.root.foo.NullFactoryBean"/>
Potrebujeme bean, ktorý je de facto ekvivalentný null, takže si ho vyrobme cez továreň:
public class NullFactoryBean implements FactoryBean<Object> {
public Object getObject() throws Exception {
return null;
}
public Class<?> getObjectType() {
return Object.class;
}
public boolean isSingleton() {
return true;
}
}
Ak je v projekte bieda, tak aj tá rozhodovacia logika, ktorý bean vyrobiť, sa dá napchať do továrne.