1

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

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

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

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

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

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

编辑

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

4

1 回答 1

0

我坚信会话应该尽可能地与系统的业务逻辑脱钩。

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

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

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

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

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

于 2013-04-04T18:55:14.530 回答