第一种方式:用bean注入的方式将自己的实现的session监听器方法,放进SessionEventHttpSessionListenerAdapter 这个中
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.web.http.SessionEventHttpSessionListenerAdapter;
/**
* session配置类
*
*/
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 120)
public class SpringSessionConfiguration {
@Bean
public SessionEventHttpSessionListenerAdapter sessionEventHttpSessionListenerAdapter()
{
List<HttpSessionListener> httpSessionListeners = new ArrayList<HttpSessionListener>();
httpSessionListeners.add(new MySessionListener());
return new SessionEventHttpSessionListenerAdapter(httpSessionListeners);
}
}
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MySessionListener implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session创建成功:"+ se.getSession().getAttribute("name"));
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("session失效:"+ se.getSession().getAttribute("name"));
}
}
第二中方式:不用session监听器,直接下面的注解也可以实现监听session的创建、销毁
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.events.SessionCreatedEvent;
import org.springframework.session.events.SessionDeletedEvent;
import org.springframework.session.events.SessionExpiredEvent;
import org.springframework.session.web.http.DefaultCookieSerializer;
/**
* session整合配置类
*
*/
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 120)
public class SpringSessionConfiguration {
/**
* Redis内session过期事件监听
*/
@EventListener
public void onSessionExpired(SessionExpiredEvent expiredEvent) {
String sessionId = expiredEvent.getSessionId();
}
/**
* Redis内session删除事件监听
*/
@EventListener
public void onSessionDeleted(SessionDeletedEvent deletedEvent) {
String sessionId = deletedEvent.getSessionId();
}
/**
* Redis内session保存事件监听
*/
@EventListener
public void onSessionCreated(SessionCreatedEvent createdEvent) {
String sessionId = createdEvent.getSessionId();
}
}