将Spring bean设置为null

我正在使用Spring将JMS连接工厂注入到我的Java应用程序中。由于仅在生产环境中才需要该工厂,但是在开发过程中却不需要,因此我将Bean定义放入单独的XML中,并将其包含在主applicationContext.xml中。在生产环境中,此额外文件包含常规bean定义。在我的本地开发环境中,我希望此bean为null。当Spring遇到一个未知的引用ID时,试图完全完全删除Bean定义显然会导致错误。

因此,我尝试创建仅返回null的工厂bean。如果我这样做,Spring(2.5.x)会抱怨工厂返回了null,尽管基于FactoryBean接口的Spring API文档,我希望它可以正常工作(请参见Spring API doc)。

XML看起来像这样:

<bean id="jmsConnectionFactoryFactory" class="de.airlinesim.jms.NullJmsConnectionFactoryFactory" />

<bean id="jmsConnectionFactory" factory-bean="jmsConnectionFactoryFactory" factory-method="getObject"/>

这样做的“正确”方法是什么?

回答:

factory-bean/ factory-method不适用于null,但自定义FactoryBean实现的效果很好:

public class NullFactoryBean implements FactoryBean<Void> {

public Void getObject() throws Exception {

return null;

}

public Class<? extends Void> getObjectType() {

return null;

}

public boolean isSingleton() {

return true;

}

}

<bean id="jmsConnectionFactory" class = "com.sample.NullFactoryBean" />

以上是 将Spring bean设置为null 的全部内容, 来源链接: utcz.com/qa/426886.html

回到顶部