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.