@Autowired注释应该放在哪里-属性或方法上?
哪个更正确?
这(在方法上带有@Autowired注释)?
@Controllerpublic class MyController
{
private MyDao myDao;
@Autowired
public MyController(MyDao myDao)
{
this.myDao = myDao;
}
这(在属性上带有@Autowired注释)?
@Controllerpublic class MyController
{
@Autowired
private MyDao myDao;
public MyController(MyDao myDao)
{
this.myDao = myDao;
}
@Autowired注释应该去哪里?
回答:
我个人更喜欢你的第一个选择(构造函数注入),因为该myDao
字段可以标记为final:
@Controllerpublic class MyControllear {
private final MyDao myDao;
@Autowired
public MyController(MyDao myDao) {
this.myDao = myDao;
}
构造函数注入还允许你在单元测试中测试类,而无需依赖Spring的代码。
第二种选择最好写成:
@Controllerpublic class MyControllear {
@Autowired
private MyDao myDao;
MyController() {
}
使用字段注入,Spring将创建对象,然后更新标记为注入的字段。
你没有提到的一个选项是@Autowired
使用setter方法(setter注入):
@Controllerpublic class MyControllear {
private MyDao myDao;
MyController() {
}
@Autowired
public void setMyDao(MyDao myDao) {
this.myDao = myDao;
}
你不必选择一个或另一个。你可以将字段注入用于某些依赖项,并将构造函数注入用于其他针对同一对象的注入。
以上是 @Autowired注释应该放在哪里-属性或方法上? 的全部内容, 来源链接: utcz.com/qa/433644.html