1. 程式人生 > >自定義項目啟動初始化信息的listener報錯

自定義項目啟動初始化信息的listener報錯

servle eve 如果 cep lis private 定義 順序 web.xml

自定義初始化組件代碼如下:

@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報錯