監聽器是一個專門用于對其他對象身上發生的事件或狀态改變進行監聽和相應處理的對象,當被監視的對象發生情況時,監聽器也會執行相應的動作。
1、SpringBoot 中 Listener 實作方式
第一步:啟動類中添加注解 @ServletComponentScan
@SpringBootApplication
//使用注解方式實作監聽器
@ServletComponentScan
public class ListenerApplication {
public static void main(String[] args) {
SpringApplication.run(ListenerApplication.class, args);
}
}
第二步:建立一個類實作Listener接口,并重寫相應的方法
@WebListener
public class ServletRequestListenerDemo implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("ServletRequestListenerDemo--------------> 請求銷毀");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("ServletRequestListenerDemo--------------> 請求建立");
}
}
測試:通路TestController接口,位址:http://localhost:8080/api/v1/test
@RestController
public class TestController {
@RequestMapping("/api/v1/test")
public Object test(){
System.out.println("controller ----------> 正在執行");
return "通路成功!";
}
}
結果:
2、整理一份常用的監聽器接口:
1.ServletContextListener – 監聽servletContext對象的建立以及銷毀
1.1 contextInitialized(ServletContextEvent arg0) -- 建立時執行
1.2 contextDestroyed(ServletContextEvent arg0) -- 銷毀時執行
2.HttpSessionListener – 監聽session對象的建立以及銷毀
2.2 sessionCreated(HttpSessionEvent se) -- 建立時執行
2.2 sessionDestroyed(HttpSessionEvent se) -- 銷毀時執行
3.ServletRequestListener – 監聽request對象的建立以及銷毀
3.1 requestInitialized(ServletRequestEvent sre) -- 建立時執行
3.2 requestDestroyed(ServletRequestEvent sre) -- 銷毀時執行
4.ServletContextAttributeListener – 監聽servletContext對象中屬性的改變
4.1 attributeAdded(ServletContextAttributeEvent event) -- 添加屬性時執行
4.2 attributeReplaced(ServletContextAttributeEvent event) -- 修改屬性時執行
4.3 attributeRemoved(ServletContextAttributeEvent event) -- 删除屬性時執行
5.HttpSessionAttributeListener --監聽session對象中屬性的改變
5.1 attributeAdded(HttpSessionBindingEvent event) -- 添加屬性時執行
5.2 attributeReplaced(HttpSessionBindingEvent event) -- 修改屬性時執行
5.3 attributeRemoved(HttpSessionBindingEvent event) -- 删除屬性時執行
6.ServletRequestAttributeListener --監聽request對象中屬性的改變
6.1 attributeAdded(ServletRequestAttributeEvent srae) -- 添加屬性時執行
6.2 attributeReplaced(ServletRequestAttributeEvent srae) -- 修改屬性時執行
6.3 attributeRemoved(ServletRequestAttributeEvent srae) -- 删除屬性時執行