Sto utilizzando Spring per iniettare factory di connessione JMS nella mia applicazione Java. Dato che questo factory è richiesto solo all'interno dell'ambiente di produzione, non mentre sto sviluppando, ho messo la definizione del bean in un XML separato che includo nel mio applicationContext.xml principale. Negli ambienti di produzione questo file extra contiene la normale definizione del bean. Nel mio ambiente dev locale mi piacerebbe che questo bean fosse nullo. Cercando di rimuovere semplicemente la definizione del bean, tutto ovviamente ha causato un errore quando Spring ha trovato un ID di riferimento che non conosceva.Impostare intenzionalmente un bean Spring su null
Così ho provato a creare un bean factory che restituirebbe semplicemente null. Se faccio questo, Spring (2.5.x) si lamenta che il factory ha restituito null sebbene, sulla base del documento Spring API dell'interfaccia FactoryBean, mi aspettavo che funzionasse (vedi Spring API doc).
L'XML sembra qualcosa di simile:
<bean id="jmsConnectionFactoryFactory" class="de.airlinesim.jms.NullJmsConnectionFactoryFactory" />
<bean id="jmsConnectionFactory" factory-bean="jmsConnectionFactoryFactory" factory-method="getObject"/>
Quale sarebbe il modo "corretto" di fare questo?
C'è una richiesta di funzionalità aperta per questo, ma ci siamo seduti da 2 anni ... votare per questo potrebbe aiutare: http://jira.springframework.org/browse/SPR-5320 – skaffman
Questo non ha funzionato per me se ho usato il bean in un contesto '@ Autowired'. –
Ottengo BeanCreationException se restituisco null. Causato da: org.springframework.beans.factory.BeanCreationException: Errore nella creazione di bean con nome 'nullObject' definito nella risorsa del percorso di classe [XXX.xml]: factory-bean 'NullFactoryBean' restituito null – endless