1. 程式人生 > >srping boot 監聽器中ServletContextListener 注入空指標異常問題

srping boot 監聽器中ServletContextListener 注入空指標異常問題

spring boot 中quartz任務會在job伺服器重啟的時候,job任務就會失效了,所以得配置一個監聽器ServletContextListener,在監聽器啟動的時候把還沒有跑的任務重啟add到job裡面去,具體可以看我上一篇博文,這裡主要記錄springboot監聽器注入空指標問題,autowired的類在啟動的時候,由於相應的beanfactory還沒有載入,所以會出現空指標問題,解決方法如下:

@WebListener
public class ContextListener implements ServletContextListener{
	
	@Autowired
	private SharesMapper sharesMapper;
 
	@Autowired
	private  Scheduler scheduler;
	
	@Override
	public void contextInitialized(ServletContextEvent event) {
	    	
	       System.out.println("自定義監聽器啟動:");
	       WebApplicationContextUtils.getRequiredWebApplicationContext(event.getServletContext())  
           .getAutowireCapableBeanFactory().autowireBean(this);  
	       
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		
	}
}
這樣就可以隨意用@Autowired 了