Spring的Annotation Type Required被标记为已弃用
已弃用。 从5.1开始,建议使用构造函数注入进行必需的设置(或自定义的InitializingBean实现)
与相关RequiredAnnotationBeanPostProcessor
相同但是不清楚什么是替代品,似乎应该不可用。
此更改是否阻止我们将方法标记为必需的,除非它是构造方法的一部分?防止在类创建时发生意外异常?
答案 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" />