类的构造方法上加@Autowired

参考https://www.cnblogs.com/x-jingxin/p/12918974.html

@RestController
public class AController {

    private User user;

    /**
     * 这里不加@Autowired也会默认注入user
     * 因为只有一个有参构造器时,参数值会从容器中拿
     */
    @Autowired
    public AController(User user){
        this.user = user;
        this.user.getName();
    }
}

//而如果下面这样写会报空指针
@RestController
public class AController {

    @Autowired
    private User user;

    /** 
     * 报错:因为构造方法会提前于@Autowired执行
     */
    public AController(){
        user.getName();
    }
}

 

 

注意:Java类中变量的初始化顺序为:静态变量或静态语句块–>实例变量或初始化语句块–>构造方法–>@Autowired

posted @ 2020-11-05 10:07  为青春而搏  阅读(1093)  评论(0编辑  收藏  举报