@Autowired使用说明

注入顺序

@Autowired先以类型进行注入,再以名称进行注入,而@Resource以名称进行注入,不太推荐。

指定名称

@Autowired遇到多个同继承类时可能会出问题,建议带个@Qualifier指定下名称。

使用方式

建议不要用在字段上,可能因未初始化而报空指针,建议用在setter或构造器上。

初始化顺序

Java变量初始化顺序:静态变量或静态语句块 > 实例变量或初始化语句块 > 构造方法 > @Autowired

官方推荐写法

  • 构造注入
@RestController
public class PersonController {

    private final PersonService personService; //这里使用final表明这是个单例对象,即bean上未定义@scope默认为单例对象

   /**
     * Spring Team建议:“始终在bean中使用基于构造函数的依赖注入。始终使用断言来强制依赖”。
     */
    @Autowired
    public PersonController(@Qualifier("personService") PersonService personService){
        Assert.notNull(personService, "personService must not be null");
        this.personService = personService;
    }
}
  • set注入
@RestController
public class PersonController {

    private PersonService personService;

    @Autowired
    @Qualifier("personService")
    public void setPersonService(PersonService personService) {
        this.personService = personService;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值