导言
从 Spring 1.1.1 开始,EHCache 就作为一种通用缓存解决方案集成进 Spring。
我将示范拦截器的例子,它能把方法返回的结果缓存起来。
利用 Spring IoC 配置 EHCache
在 Spring 里配置 EHCache 很简单。你只需一个 ehcache.xml 文件,该文件用于配置 EHCache:
拦截器将使用 ”org.taha.cache.METHOD_CACHE” 区域缓存方法返回结果。下面利用 Spring IoC 让 bean 来访问这一区域。
构建我们的 MethodCacheInterceptor
该拦截器实现org.aopalliance.intercept.MethodInterceptor接口。一旦运行起来(kicks-in),它首先检查被拦截方法是否被配置为可缓存的。这将可选择性的配置想要缓存的 bean 方法。只要调用的方法配置为可缓存,拦截器将为该方法生成 cache key 并检查该方法返回的结果是否已缓存。如果已缓存,就返回缓存的结果,否则再次调用被拦截方法,并缓存结果供下次调用。
org.taha.interceptor.MethodCacheInterceptor
MethodCacheInterceptor 代码说明了:
默认条件下,所有方法返回结果都被缓存了(methodNames 是 null) 缓存区利用 IoC 形成 cacheKey 的生成还包括方法参数的因素(译注:参数的改变会影响 cacheKey)使用 MethodCacheInterceptor
下面摘录了怎样配置 MethodCacheInterceptor:
译注
夏昕所著《Hibernate 开发指南》,其中他这样描述 EHCache 配置文件的: