【问题标题】:Simple session based data caching for spring mvc 3spring mvc 3的简单基于会话的数据缓存
【发布时间】:2011-09-13 21:22:56
【问题描述】:

对于我们的 Spring MVC 3.1 应用,我需要简单、更可取的基于会话的缓存。我知道在 3.1 中引入了兑现抽象,但据我所知,它是应用程序范围的缓存。我们需要一些更简单的东西来缓存用户网格数据。我什至不直接使用它,只要它有简单的界面。

有人用过类似的吗?有什么好的库吗?或者有没有办法强制 Spring 缓存抽象只为当前会话缓存数据?还是我注定要自己写?

【问题讨论】:

    标签: java spring session caching spring-mvc


    【解决方案1】:

    会话范围的 bean

    如果您不介意显式解决方案,请创建一个具有 session 范围的 bean 并将其注入您的控制器。

    如果你没有忘记用作用域代理 (<aop:scoped-proxy/>) 包装它,你可以 只需将缓存的数据放在该 bean 的字段中。 Spring 将自动为每个 HTTP 会话创建该 bean 的一个实例并将其存储在那里。

    缓存抽象

    另一方面,我认为 Spring 缓存抽象可能对您有用 - SPeL 使您可以访问 HTTP 环境,因此您可能基于当前用户会话 id 或其他一些属性(如用户名)以声明方式(在注释中)构造缓存键。

    【讨论】:

    • session scoped bean 是我考虑过的,而是我自己实现简单缓存的一种方式。而且我真的不想重新发明轮子:) 缓存抽象 使用包含会话ID 的键?好吧,这很有趣,但它仍然会在整个应用程序范围内跳过数据,现在,如果用户在清除旧缓存数据之前多次登录和注销,则会获得更多数据。至少对于会话,我知道一旦会话无效,它就会被丢弃。
    • 如果您采用缓存抽象方法(我不确定这是否可行但值得尝试),您可以通过实现 org.springframework.cache.support.AbstractCacheManager 轻松插入自己的缓存。
    • 耶,但是,它仍然是我自己实现的,可能需要更多时间:?另一方面,它将具有相同的界面:)
    猜你喜欢
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2012-12-09
    • 2015-04-21
    • 2015-03-13
    • 2012-06-30
    相关资源
    最近更新 更多