【问题标题】:Session management for big application (Java)大型应用程序的会话管理 (Java)
【发布时间】:2013-03-26 21:43:39
【问题描述】:

我的问题有点主观,可能与上下文无关,所以请原谅。

我正在开发一个应用程序,我们需要在各个地方使用 Session 说

  1. 在 Session 中存储用户首选项。
  2. 在 Session 中存储一些属性。
  3. 用户个人资料。
  4. 在会话中存储购物车。

还有很多其他的事情,更何况我们需要提供一种干净的方式让其他用户使用Session。 我知道如何注入会话或使用它以及它是如何工作的等等,所以这对我来说不是问题。

我想知道一种方法来创建一个服务说 (SessionService) 并让所有 API 使用它来处理 HTTP 会话。

有没有人工作/开发过这样的实现,如果是,请分享如何最好地做到这一点,任何参考都会很有帮助。

编辑

我们正在使用 Spring Security 进行身份验证和授权

【问题讨论】:

    标签: java jakarta-ee web-applications servlets


    【解决方案1】:

    我坚信会话应该尽可能地与系统的业务逻辑保持分离。

    无论如何,在视图层操作时,请提供访问会话的实用程序,但请记住以下内容;

    • 会话对象本身不是线程安全的;
    • 任何属性都可以随时更改
    • 任何属性都可以被任何一段代码修改
    • 测试任何涉及会话的东西都是痛苦的

    如果您关心业务逻辑,请考虑以下方法;

    • 实施服务层
      • 处理业务逻辑不可变对象
      • 可以通过自定义适配器或Spring convertors 处理转换
      • 在视图和业务逻辑之间提供关注点分离
      • 更好的可测试性(如果这是一个词)
    • 管理内存中对象数据库而不是会话中的临时状态
      • 支持分布式复制,实现高可用性
      • 支持事务行为以实现一致性
      • 易于测试
      • 在你的简历上看起来很酷

    我希望这会有所帮助。如果没有,关于您的目标的更多信息可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多