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