一 ,springboot使用listener有两种方式一种是通过ServletListenerRegistrationBean代码注册,一种是通过注解@WebListener
1 @WebListener方式
需要在主程序Applicaiton上开启 @ServletComponentScan
新建listener类 选择实现的listener接口
这里选择用ServletContextListener 代码如下
package com.kerry.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
* Application Lifecycle Listener implementation class MyServletContextListener
*
*/
/**
* 通过 @WebListener 或者 使用代码注册 ServletListenerRegistrationBean
* @author Administrator
*
*/
@WebListener
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println(sce.getServletContext().getServletContextName()+" init");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println(sce.getServletContext().getServletContextName()+" destroy");
}
}
2,通过ServletListenerRegistrationBean代码注册
以HttpSessionListener示例
package com.kerry.listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* Application Lifecycle Listener implementation class MyHttpSessionListener
* 通过 @WebListener 或者 使用代码注册 ServletListenerRegistrationBean
*/
public class MyHttpSessionListener implements HttpSessionListener {
/**
* Default constructor.
*/
public MyHttpSessionListener() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpSessionListener#sessionCreated(HttpSessionEvent)
*/
public void sessionCreated(HttpSessionEvent se) {
System.out.println(se.getSession().getId()+" session create");
}
/**
* @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
*/
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println(se.getSession().getId()+" session destroy");
}
}
ListenerConfigure类
package com.kerry.configure;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.kerry.listener.MyHttpSessionListener;
@Configuration
public class ListenerConfigure {
@Bean
public ServletListenerRegistrationBean<MyHttpSessionListener> serssionListenerBean(){
ServletListenerRegistrationBean<MyHttpSessionListener>
sessionListener = new ServletListenerRegistrationBean<MyHttpSessionListener>(new MyHttpSessionListener());
return sessionListener;
}
// @Bean
// public ServletListenerRegistrationBean<MyServletContextListener> servletContextListenerBean(){
// ServletListenerRegistrationBean<MyServletContextListener>
// sessionListener = new ServletListenerRegistrationBean<MyServletContextListener>(new MyServletContextListener());
// return sessionListener;
// }
}
附上项目代码结构: