您的位置:首页 > 编程语言 > Java开发

【JavaWeb】Spring无法@Autowired注入

2017-11-29 20:25 417 查看
在用Spring依赖注入时发现@Autowired无法注入,代码如下:

@Autowired
private static MyBean1 bean1 ;
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("Beans.xml");
bean1.method1();
}


类MyBean1:

@Component
public class MyBean1 {
public void method1() {
System.out.println("bean 1");
}

}


运行报错:

Exception in thread "main"

java.lang.NullPointerExceptionat test2.Main.main(Main.java:12)


bean1并为注入进来

原因:因为用的是普通Java程序,类的初始化顺序为先静变量,然后静态方法,然后非静态变量,然后非静态方法。

因为是先初始化的静态bean1,此时并未加载Beans.xml配置文件,所以无法扫描到包下的@Component组件注解,也就没有注册bean给spring,所以无法依赖注入。

改为在web项目中即可,因为web项目在初始化加载的时候首先加载配置文件这样bean就可以正常注入了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring string java web bean