【发布时间】:2018-11-12 19:58:45
【问题描述】:
我有一个 Spring 应用程序,其中会话存储在 redis 中,超时时间很短(1m)。我想在会话超时后调用一个函数,但是没有调用 SessionDestroyedEvent @EventListener。
SessionListener.java:
import org.springframework.context.event.EventListener;
import org.springframework.session.events.SessionCreatedEvent;
import org.springframework.session.events.SessionDestroyedEvent;
import org.springframework.stereotype.Component;
@Component
public class SessionListener {
@EventListener
public void sessionCreated(SessionCreatedEvent event) {
System.out.println("created"); // gets called
}
@EventListener
public void sessionDestroyed(SessionDestroyedEvent event) {
System.out.println("destroyed"); // never gets called
}
}
application.properties:
spring.session.store-type=redis
server.servlet.session.timeout=1m
注释:
- SessionCreatedEvent 上的 eventListener 被调用
- 来自 redis 的会话在超时后消失
【问题讨论】:
标签: spring redis timeout event-listener spring-session