@PostConstruct 注解导致的空指针异常
@PostConstruct 用途是执行在依赖注入完成之后的操作。
比如:类A注入了类B。在初始化类A时,根据类的执行顺序要先执行类A的构造方法,再执行注入。所以,构造方法中就无法使用类B。而被@PostConstruct注解的方法,在类A初始化的过程中,注入完类B后再执行。
参考:https://blog.csdn.net/u014515854/article/details/78832790
而在使用@PostConstruct一定要注意spring的加载类的顺序:
举一个例子:
如果spring先加载App,再加载PostConstructT。即使使用了注入,但是public Object app = PostConstructT.arrayList.get(0)会等于注入执行。就会产生空指针异常。
结论:
Java变量的初始化顺序为:
父类静态变量或静态语句块–>子类静态变量或静态语句块->父类实例变量或初始化语句块–>父类构造方法->子类实例变量或初始化语句块->子类构造方法->@AutoWired->@PostConstruct