当前位置: 首页 > 面试题库 >

故意将Spring bean设置为null

丌官信厚
2023-03-14
问题内容

我正在使用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" />


 类似资料:
  • 我想制作一个AngularJS Spring MVC Hibernate MySQL应用程序。我不知道如何配置SpringBean,这样我就可以对我的存储库和实体类使用自动连接的注释。 pom.xml依赖: 实体类: 的存储库: 的控制器: 配置类:

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

  • 问题内容: 我正在研究RoR,并将此虚拟机设置为“部署” RoR,并且陷入了Node.js的安装过程。 我正在使用Ubuntu 12.04,并且遵循了本指南的这一步骤: http://railsapps.github.com/installing- rails.html 从Rails 3.1开始,在Ubuntu Linux上进行开发需要JavaScript运行时(Mac OS X或Windows则

  • 目前,这就是我如何捕捉异常并设置有效负载的方法 但是,CXF SOAP组件设置实际响应对象的有效负载。而我想在SOAP错误中发送一个错误对象。我怎么能那样做? 默认异常策略发送带有错误消息的SOAP错误。最初,我的目的只是添加记录器,让缺省错误消息在SOAP错误中运行。我添加了Catch exception策略,但后来发现它不会发送SOAP错误。然后我使用回滚策略发送SOAP错误。但是,使用Mul

  • 我正在尝试从Java/Spring软件发送电子邮件。我正在使用spring框架的JavaMailSender。如何将本地计算机配置为JavaMailSender的smtp主机?我可以通过以下命令发送电子邮件: 然而,我怎样才能写我的邮件。支持上述命令的属性? 这是我的javaMailSender bean: 这是mail.properties文件:

  • Apache camel留档描述了如何使用@Component和SpringRouteBuilder注册路由生成器,然后跳转到xml代码 我如何用java配置做同样的事情?我有 和 组件是由Spring拾取并创建的,这部分很好。我可以通过注册路由。唯一缺少的是如何告诉骆驼上下文拾取路由,如果它被管理为Spring bean。