【发布时间】:2010-01-29 16:04:27
【问题描述】:
我正在使用 Spring 将 JMS 连接工厂注入到我的 Java 应用程序中。由于这个工厂只需要在生产环境中,而不是在我开发时,我将 bean 定义放入一个单独的 XML 中,我将它包含在我的主 applicationContext.xml 中。在生产环境中,这个额外的文件包含常规的 bean 定义。在我的本地开发环境中,我希望这个 bean 为空。当 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"/>
这样做的“正确”方法是什么?
【问题讨论】: