类的构造方法上加@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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM