@PostConstruct 注解导致的空指针异常

@PostConstruct 注解导致的空指针异常

@PostConstruct 用途是执行在依赖注入完成之后的操作。

比如:类A注入了类B。在初始化类A时,根据类的执行顺序要先执行类A的构造方法,再执行注入。所以,构造方法中就无法使用类B。而被@PostConstruct注解的方法,在类A初始化的过程中,注入完类B后再执行。

参考:https://blog.****.net/u014515854/article/details/78832790

 

而在使用@PostConstruct一定要注意spring的加载类的顺序:

举一个例子:

@PostConstruct 注解导致的空指针异常

 

@PostConstruct 注解导致的空指针异常

 

如果spring先加载App,再加载PostConstructT。即使使用了注入,但是public Object app = PostConstructT.arrayList.get(0)会等于注入执行。就会产生空指针异常。

 

结论:

Java变量的初始化顺序为:

父类静态变量或静态语句块–>子类静态变量或静态语句块->父类实例变量或初始化语句块–>父类构造方法->子类实例变量或初始化语句块->子类构造方法->@AutoWired->@PostConstruct