【main中为什么不能用@Autowired注解? 】 | IT修真院·坑乎
main中为什么不能用@Autowired注解?
我也踩过这个坑( 1 )
已统计您的踩坑,无需重复点击
回答(1)
详细描述
错误截图
编辑于2025-04-04
  • [北京|荣耀师兄]JAVA-白云中
    0

    程序执行是这样子的,先找到main方法开始执行,然后从上先执行static修饰的语句,显示初始化ac,然后开始执行main方法里的语句,由于studentService没有初始化,会在执行它的方法时报出空指针异常,程序运行失败。

    为什么不会先实例化StudentService呢?因为StudentService加上@Autowired注解后, 注入是在容器中实例化对象,不再是静态的。而Java变量的初始化顺序为:静态变量或静态语句块–>实例变量或初始化语句块–>构造方法–>@Autowired。main方法中只有启动项目才能加载配置文件,才能自动注入,才能找到响应的bean。


    编辑于2019-07-20