Estoy usando Spring para inyectar fábrica de conexiones JMS en mi aplicación Java. Dado que esta fábrica solo se requiere en el entorno de producción, no mientras desarrollo, coloco la definición de bean en un XML separado que incluyo en mi applicationContext.xml principal. En entornos de producción, este archivo adicional contiene la definición regular de bean. En mi entorno de desarrollo local me gustaría que este bean sea nulo. Tratar de simplemente eliminar la definición de bean todos juntos obviamente causó un error cuando Spring encontró una ID de referencia que desconocía.Configurar intencionalmente un bean de resorte para anular
Así que traté de crear un bean de fábrica que simplemente devolvería nulo. Si hago esto, Spring (2.5.x) se queja de que la fábrica devolvió el valor nulo, aunque basado en el documento de Spring API de la interfaz de FactoryBean, esperaba que esto funcionara (ver Spring API doc).
El XML se ve algo como esto:
<bean id="jmsConnectionFactoryFactory" class="de.airlinesim.jms.NullJmsConnectionFactoryFactory" />
<bean id="jmsConnectionFactory" factory-bean="jmsConnectionFactoryFactory" factory-method="getObject"/>
Cuál sería la forma "correcta" de hacer esto?
Hay una solicitud de función abierta para esto, pero ha estado allí durante 2 años ... votar a favor podría ayudar: http://jira.springframework.org/browse/SPR-5320 – skaffman
Esto no funcionó para mí si usó el bean en un contexto '@ Autowired'. –
Obtengo BeanCreationException si devuelvo nulo. Causado por: org.springframework.beans.factory.BeanCreationException: Error al crear bean con el nombre 'nullObject' definido en el recurso de ruta de clase [XXX.xml]: factory-bean 'NullFactoryBean' devuelto nulo – endless