当前位置: 首页 > 知识库问答 >
问题:

如何将“nulls”注入到自动连线的Springbean中?

鲜于高明
2023-03-14

我正在编写单元测试,有一个非常复杂的设置。

依赖bean设置一些侦听器,并将它们传递给自动连线服务。

我想测试侦听器是否存在,但不调用它们,因此我想传递'null'而不是自动连线服务。(特别是:我没有二传手…)

@Autowired
SomeService1 service1

@Autowired
SomeService2 service2


public List getListeners() {
  List l = new ArrayList();
  l.add(new AaaListener(service1));
  l.add(new BbbListener(Service2));
  return l;
}
@Test
public void testListeners() {
  int exptecedSize = 2;

  sut.doSomething();

  List l = sut.getX().getY().getListeners()

  assertEquals(expectedSize,l.size());
}

请注意,SUT确实间接依赖于返回侦听器的类。

因为这是一个来自大设置的非常小的示例,所以我不想在这里使用mock,因为我只想测试侦听器的存在性而不是行为。

嘲笑20或30个这样的服务会大大减慢测试速度。

问题:将这些空值注入自动连接实例变量的最简单方法是什么?

A) 添加setter?

B)反射Utils?

C) java config@Beans返回空值?

共有2个答案

王弘和
2023-03-14
  1. 不要使用Spring上下文并手动创建类
澹台硕
2023-03-14

当类被实例化时,它们已经null。。。或者您实际上是在spring上下文中运行它们?

您可以在xml配置中将属性设置为null,如下所示(来自文档)

<bean class="ExampleBean">
    <property name="email"><null/></property>
</bean>
 类似资料:
  • 问题内容: 我正在使用一个已定义的拦截器,我想从拦截器中通过DAO层进行db调用,所以我如何将Spring bean注入到struts拦截器中。是否可以将spring bean注入到struts拦截器中,任何人都可以提出任何想法在此。 问题答案: 编辑 由于不需要将拦截器声明为Spring bean,因此删除了不必要的部分。感谢@AleksandrM对其进行测试。 就像使用Actions一样,(如

  • 我有下面的映射器类,我想在其中使用。我正在尝试构造函数注入,但不起作用,并且正在打印。 mapStruct实现类 如果我使用使用字段注入,这样它就可以正常工作。这意味着Spring不支持类的构造函数注入。是因为类不能直接实例化,需要子类来实例化吗? 有没有什么方法可以在实现类中创建一个构造函数,如下所示: 这样,构造函数注入应该可以工作。

  • 我有几个EJB3。x无状态会话bean,未定义接口。我需要将这些bean注入到Springbean中,但我无法这样做。 无接口EJB: 我的豆子: 还有我的豆子。xml 在初始化Spring容器时,我得到以下错误: 异常本身非常清楚——spring容器期望MyBean有一个本地接口视图作为其业务接口;但是,我没有(也不能介绍)。 非常感谢您的帮助!

  • 在Springs的最新版本中,我们可以使用注释作为自动连接bean。这将使用bean的类型(或构造函数,如果应用于它的话)自动连接bean。有什么方法可以使用基于bean名称的注释吗?我们在Spring的XML文件中没有注释autowire=“byName”?

  • 我正在使用< code>MapStruct,为此我必须定义一个具有相应映射函数的接口。通过使用用< code > @ before mapping < code > 和@AfterMapping注释的< code>default方法,可以实现一些逻辑。在这样一个带注释的默认方法中,我想使用我的SpringBoot应用程序的一个配置类。我该怎么做?我可以将这样的配置(bean)自动连接到接口吗?这样

  • 我使用的是SpringMVC3.2。4和Apache Commons Pooling 2.3,用于管理到SOAP服务的连接。我正在使用的一个功能是GenericObjectPool类中的“空闲对象逐出”线程功能: http://commons.apache.org/proper/commons-pool/api-2.3/org/apache/commons/pool2/impl/GenericOb