2012-09-25 42 views
0

我在我的項目中使用基於Spring聲明式註釋的緩存。聲明式Spring緩存自定義

的applicationContext.xml

<cache:annotation-driven /> 

目前,一切完美使用基於彈簧註解緩存。 我們在開發和本地環境中使用基於ehCacheConcurrentHashMap的下劃線緩存機制。

現在有一個項目需求,我需要更新Spring緩存框架的行爲與一些特定的業務需求。

我想知道如果任何人幫我弄明白我怎麼能代替

<cache:annotation-driven /> 

將此批註與任何彈簧類的定義,我可以自定義的行爲?

回答

2

檢出org.springframework.cache.annotation.EnableCaching。 查看源代碼中的註釋。

它相當於<緩存:註釋驅動/>但在春季java配置。

您將prolly需要重寫這個類:org.springframework.cache.aspectj.AnnotationCacheAspect

其負責接線勸

0

這個回答導致我在正確的方向。我從spring中發現的關於緩存支持的內部工作原理是,它不是在cacheManager和KeyGenerator實現之外注入的Dependency。我想要繼承/擴展CacheAspectSupport,發現這個類首先被CacheInterceptor擴展,但是這個類是使用類ProxyCachingConfiguration中的新語句創建的。爲了能夠替換一個類/方法,將取代一些聽起來不太適合春天的類(儘管我可能會錯過某些東西)。

我期望從換行中得到一個完整列出的Spring bean集合,它組成了構成緩存支持的所有AOP切入點,建議/方面等,但它看起來像這樣只是靜態創建的類彼此之間緊密耦合。