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

将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依赖: 实体类: 的存储库: 的控制器: 配置类:

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

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

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

  • 我一直在使用空布局,很多人会说不应该这样做。有更好的办法吗? 以下是一些代码示例:

  • 如何在NumberPicker中更改字体类型。我试着这样做,但字体不变。有什么想法吗?P、 S:颜色和文本大小正在更改。 字体和路径工作正常。我将其用于自定义文本视图。