gpt4 book ai didi

java - 采用 spring-session 后迁移 HttpSessionListener

转载 作者:行者123 更新时间:2023-11-30 08:52:00 24 4
gpt4 key购买 nike

我们最近开始在我们的项目中使用 spring-session。这是一个遗留应用程序,我们有一些 HttpSessionListener .因此,当 session 过期或用户使 session 无效时 sessionDestroyed(HttpSessionEvent se)方法被调用。您可以通过调用 getSession() 获取即将被销毁的 HttpSession HttpSessionEvent

上的方法

Spring session 也有类似的东西。 Redis session 存储库实现将触发 org.springframework.session.events.SessionDestroyedEvent事件,您可以添加 ApplicationListener对它做一些处理。

但这并不能满足我的需求。

我遇到的问题是,它不能用于迁移我们现有的 HttpSessionListener 以使用这些,即使是因为 2 个主要原因

  1. Spring Session触发的事件只给出即将被销毁的 session id。它不提供整个 session 对象的副本。因此,如果我现有的 HttpSessionListener 有一些逻辑来使用某些属性进行某些处理,我现在不能这样做。

  2. 创建 session 时没有事件。我们有 HttpSessionListener,它在创建 session 时做一些工作。

那么,为了获得我们在 Spring session 中使用 HttpSessionListener 所具有的功能,我必须采取哪些所有选项?

最佳答案

Spring Session 从 spring session 1.1 开始支持 HttpSessionListener。

您必须将 SessionEventHttpSessionListenerAdapter 配置为 HttpSessionConfig 文件中的 bean,如下所示:

@Bean
public SessionEventHttpSessionListenerAdapter session() {
List<HttpSessionListener> listeners = new ArrayList<HttpSessionListener>();
listeners.add(new MyListener());
return new SessionEventHttpSessionListenerAdapter(listeners);
}

正如您在上面看到的,我已经注册了名为 MyListener 的自定义 HttpSessionListener。在此您可以根据需要配置 session 创建和销毁事件。

public class MyListener implements HttpSessionListener {

@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("CREATED--------");
}

@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("DELETED--------");
}
}

如果这有帮助,请告诉我!

关于java - 采用 spring-session 后迁移 HttpSessionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30341254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com