ApplicationContext applicationContext = null
Springboot启动时发生调用错误。 applicationContext=null怎么办?
代码: @ componentpublicclasspringutilsimplementsapplicationcontextaware { privatestaticapplicationcontextaplicationcontext; @ overridepublicvoidsetapplicationcontext (applicationcontext ) throwsbeansexception { spring utils.application publicstaticapplicationcontextgetapplicationcontext () { return applicationContext; } publicstaticobjectgetbean (string name ) returnapplicationcontext.get bean ) name; } publicstatictgetbean (classt clazz ) returnapplicationcontext.get bean (clazz ) clazz; }
情况1 :非初始化时调用: Springboot项目启动后,使用时动态初始化调用类,没有任何问题。
spring utils.get bean (convertservice ) )。
情况2 )初始化时调用,但在初始化时,@ post construct @ postconstructpublicvoidinit ((spring utils.get bean ) convertservice ) ) }启动时进行了初始化,applicationContext报告了错误。 应用程序上下文=null
思考:互联网上讲述了各种各样的问题解决方法,比如添加@lazy(false )
@component@lazy(false )公共类spring utils { }
但是问题没有解决。 知道问题是初始化时的顺序问题。 初始化这个类之后,如何执行注释为@PostConstruct的方法呢?
处理:在调用SpringUtils初始化方法之前,初始化SpringUtils
@ resourceprivatespringutilsspringutils; @postconstructpublicvoidinit(} ()这样的方法虽然不是特别好的方法,但会解决问题。 为什么要在启动时调用? 也可以考虑用其他方法处理。 不需要直接放入初始化,也不需要使用计时器延迟调用。
总结:初始化springBoot项目并调用SpringUtils时,请先初始化,然后运行@PostConstruct的方法。 在常见的springBoot项目中,xml几乎都不见了。 否则,直接用xml设置,首先读入SpringUtils类。