自定义项目启动初始化信息的listener报错
Posted goxcheer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义项目启动初始化信息的listener报错相关的知识,希望对你有一定的参考价值。
自定义初始化组件代码如下:
@Component public class InitComponent implements ServletContextListener, ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void contextInitialized(ServletContextEvent servletContextEvent) { ServletContext sc = servletContextEvent.getServletContext(); //设置博主信息 BloggerService bloggerService = (BloggerService) applicationContext.getBean("bloggerService"); //错误处 Blogger blogger = bloggerService.getBlogger(); blogger.setPassword(null); sc.setAttribute("blogger", blogger); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } }
写这段代码并且将其配在web.xml的listener中,用意在于项目启动的时候通过监听就初始化一些信息,
但是每次启动错误处就会报NullPoint异常,经过排查才知道:
Spring在项目启动时扫描注解配置的Bean是有顺序的,具体顺序是ApplicationContext.xml的顺序,
问题就出在这,当扫描到这个类时如果BloggerService还没有被扫描到,就自然会报错了。
以上是关于自定义项目启动初始化信息的listener报错的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 学习系列(08)—自定义servletfilter及listener
Spring Boot 学习系列(08)—自定义servletfilter及listener