Spring的注释类型必需弃用

时间:2018-11-18 06:48:47

标签: java spring deprecated

Spring的Annotation Type Required被标记为已弃用

  

已弃用。   从5.1开始,建议使用构造函数注入进行必需的设置(或自定义的InitializingBean实现)

与相关RequiredAnnotationBeanPostProcessor

相同

但是不清楚什么是替代品,似乎应该不可用。

此更改是否阻止我们将方法标记为必需的,除非它是构造方法的一部分?防止在类创建时发生意外异常?

2 个答案:

答案 0 :(得分:7)

有三种通过注解注入bean的方法:

现场注入

@Autowired
private FooService fooService;

固定注入

private FooService fooService;

@Autowired
public void setFooService(FooService fooService) {
    this.fooService = fooService
}

构造函数注入(这是上述替换项)

private final FooService fooService;

@Autowired
public MyComponent(FooService fooService) {
    this.fooService = fooService;
}

如您所见,声明服务final的唯一方法是使用构造函数注入,该注入替换@Required批注,因为它强制类的用户使用必需的实例化它服务。用户不必是Spring,它也可以是一个简单的单元测试。

对于强制性依赖项,应该使用构造函数注入;对于可选性依赖关系,应使用setter注入,而不是字段注入。 原因如下:

  • 它使每个人都清楚需要哪些依赖项
  • 它使测试更加容易
  • 您可以使对象不可变

进一步阅读:

答案 1 :(得分:0)

是的,它已被弃用,但是您仍然可以通过在XML文件中的以下提及来使用它。

<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor" />