在上家公司,有一次我面試別人時問過一個問題“如果你在web項目啓動時,就要做一個操作,刪除服務器裏面某個硬盤的日誌,這些日誌是之前留下來的,現在重新啓動需要把之前的日誌清除,你可以怎麼做?”
答案是,可以寫一個監聽器去做這個操作。
監聽器有很多種,本文介紹 servlet上下文監聽器 ServletContextListener。
下面給一個入門例子,只需要簡單的2部。
(1)用註解@WebListener寫一個監聽器,繼承ServletContextListener。通常在裏面的contextInitialized 方法做一些項目啓動前的預處理。
@WebListener
public class StartListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("【監聽器 StartListener】 contextDestroyed method %%%%%%%%%%%%%%%%");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("【監聽器 StartListener】StartListener contextInitialized method %%%%%%%%%%%%%%");
System.out.println("在監聽器中做一些預處理..........");
}
}
(2)在啓動類加上註解 @ServletComponentScan ,啓動類即springboot 中帶有main方法的那個啓動類。啓動項目,在啓動完成前會執行下面2句話:
System.out.println("【監聽器 StartListener】StartListener contextInitialized method %%%%%%%%%%%%%%");
System.out.println("在監聽器中做一些預處理..........");