我正在尝试编写一个可以跟踪所有 Ehcache GET 请求的类。对于性能痴迷 - 这只会出于调试目的而打开。
我可以看到以下三个可用选项:
1)写一个实现net.sf.ehcache.event.CacheEventListener
。这将是我的首选方式,但它只有 PUT/REMOVE/等。钩子。没有得到。嗬!
2)写一个实现net.sf.ehcache.statistics.CacheUsageListener
。这种方法的问题在于,这个接口更多地是为统计而设计的,甚至不提供对当前缓存键/元素之类的访问,所以我必须做一些可怕的黑客攻击(想想:通过共享状态ThreadLocal
)来实现我想要的。呸!
3) 编写一个 Ehcache 包装器,并通过它引导所有请求。当我们以不同的方式(使用 Hibernate 和不使用 Hibernate)使用 Ehcache 时,这非常痛苦,这意味着我必须为所有这些不同的情况编写不同的包装器。增加了维护的麻烦,而且不是很精确,因为不可能知道,例如,GET 操作是否命中了一个陈旧的条目。
还有其他我错过的选择吗?