導(dǎo)言
從 Spring 1.1.1 開始,EHCache 就作為一種通用緩存解決方案集成進 Spring。
我將示范攔截器的例子,它能把方法返回的結(jié)果緩存起來。
利用 Spring IoC 配置 EHCache
在 Spring 里配置 EHCache 很簡單。你只需一個 ehcache.xml 文件,該文件用于配置 EHCache:
攔截器將使用 ”org.taha.cache.METHOD_CACHE” 區(qū)域緩存方法返回結(jié)果。下面利用 Spring IoC 讓 bean 來訪問這一區(qū)域。
構(gòu)建我們的 MethodCacheInterceptor
該攔截器實現(xiàn)org.aopalliance.intercept.MethodInterceptor接口。一旦運行起來(kicks-in),它首先檢查被攔截方法是否被配置為可緩存的。這將可選擇性的配置想要緩存的 bean 方法。只要調(diào)用的方法配置為可緩存,攔截器將為該方法生成 cache key 并檢查該方法返回的結(jié)果是否已緩存。如果已緩存,就返回緩存的結(jié)果,否則再次調(diào)用被攔截方法,并緩存結(jié)果供下次調(diào)用。
org.taha.interceptor.MethodCacheInterceptor
MethodCacheInterceptor 代碼說明了:
默認條件下,所有方法返回結(jié)果都被緩存了(methodNames 是 null) 緩存區(qū)利用 IoC 形成 cacheKey 的生成還包括方法參數(shù)的因素(譯注:參數(shù)的改變會影響 cacheKey)使用 MethodCacheInterceptor
下面摘錄了怎樣配置 MethodCacheInterceptor:
譯注
夏昕所著《Hibernate 開發(fā)指南》,其中他這樣描述 EHCache 配置文件的: