问题描述
@Autowired
要自动装配Bean时使用注释。@Autowired
不限于二传手。它也可以与构造函数和字段一起使用。如果@Autowired
在字段上使用批注,则该字段将自动与具有匹配数据类型的bean连接。
@required
检查是否设置了特定属性。如果某个字段已使用@required
批注注释,并且未设置该字段,则将得到org.springframework.beans.factory.BeanInitializationException
。
编辑:如’kryger’所指出:用注释的字段@Autowired
也是有效的@required
(除非您将其必需的参数显式设置为false)。例如:
@Autowired(required=false)
private ObjectType objectType;
对于已注释的字段@Autowired
,如果具有匹配数据类型的bean不可用,org.springframework.beans.factory.BeanCreationException
则将抛出该字段。
解决方法
我很好奇知道这样的代码之间有什么区别:
class MyClass {
@Autowired
MyService myService;
}
和这样的代码:
class MyClass {
MyService myService;
@Required
public void setMyService(MyService val) {
this.myService = val;
}
}