自定义项目启动初始化信息的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

Spring Boot2 系列教程(十五)定义系统启动任务的两种方式

SpringBoot——实现系统启动任务

springboot项目启动之后初始化自定义配置类

springboot 初始化 web 项目 启动报错。。。一直解决不了