使Spring的@Cacheable内容仅在用户会话期间处于活动状态

时间:2018-11-20 16:20:32

标签: spring spring-boot caching browser-cache

使用Spring的@Cacheable时,如何确保缓存的持续时间不长于实际会话超时?

2 个答案:

答案 0 :(得分:0)

假设您的缓存定义如下,

@Cacheable("cacheName1")
public Map<String, List<String>> getMethod1(){
}

@Cacheable("cacheName2")
public Map<String, List<String>> getMethod2(){
}

然后在用户点击注销/会话过期时调用以下方法。

@CacheEvict(value = { "cacheName1", "cacheName2"}, allEntries = true)
public void evictAllCache(){
    logger.info("All Cache Evict");
}

答案 1 :(得分:0)

  1. 扩展CacheManager以处理存储区的名称,例如#session_#name
  2. 扩展HttpSessionListener以在会话被破坏时进行清理

请在下面找到我的每个会话的显式缓存示例草案: https://gist.github.com/pyanoveugen/b360622dc76136064b0215136f402837