spring ehcache与self-populating-cache-scope集成

时间:2012-04-12 11:04:20

标签: ehcache

我必须集成spring和ehcache,并尝试使用 blockingCache 模式实现它

<ehcache:annotation-driven/>
对于共享(默认)和方法自填充缓存范围有一个选项。你能解释一下有什么区别吗?

还有 @Cacheable 注释 selfPopulating 标记

根据我在某篇文章中的内容

http://groups.google.com/group/ehcache-spring-annotations/browse_thread/thread/7dbc71ce34f6ee19/b057610167dfb815?lnk=raot

它表示当使用共享只创建一个实例,并且每次使用相同的缓存名称时都会使用相同的内容,因此如果我使用 selfPopulating < / strong>将一个方法标记为true,

  

所有线程都试图访问其他方法注释   将@Pacheable与selfPopulating标志设置为true 将保持不变   我不想要

<ehcache:annotation-driven/>

另一方面 self-populating-cache-scope = method 为所有使用@Cacheable注释的方法创建单独实例,并将selfPopulating标志设置为true,这样就不会造成问题。

但是在这种情况下,当我尝试使用 @TriggerRemove 删除元素并给出@Cacheable中使用的缓存名称时,它会在每个单独的实例中搜索以查找值吗?这不是开销吗?

1 个答案:

答案 0 :(得分:1)

Eric回答上面的ehcache google小组

  

在所有情况下都有一个基础Ehcache实例。怎么了   当你设置selfPopulating = true时,SelfPopulatingCache包装器就是   创建

     

如果cache-scope = shared,那么使用该命名缓存的所有注释都会   使用相同的SelfPopulatingCache包装器如果cache-scope = method则   每个方法创建一个包装器

     

请注意,在这两种情况下,SelfPopulatingCache都是一个包装器   仍然只有一个支持包装器的实际缓存

     

至于阻止,如果您阅读SelfPopulatingCache的文档和   BlockingCache你会注意到ehcache之间做出妥协   缓存级别锁定和通过键条带化的每键锁定。   http://ehcache.org/apidocs/net/sf/ehcache/constructs/blocking/BlockingCache.html