如果我有一堆DAO的一堆getXXX方法,我想要所有或一些明確的緩存方法列表有什麼辦法,我可以用Spring透明地做到這一點?什麼是春季最簡單/最透明的緩存方法?
什麼我不想要的是:
- 要更改源代碼/加 anotations
- 手動必須打造一批代理豆的數量DAO的,並重新連接它們。
理想情況下,與正則表達式相匹配的DAO和方法的緩存,並根據需要自動包裝自己圍繞DAO的。
我們正在使用OSCache,所以這樣的例子會非常棒。
如果我有一堆DAO的一堆getXXX方法,我想要所有或一些明確的緩存方法列表有什麼辦法,我可以用Spring透明地做到這一點?什麼是春季最簡單/最透明的緩存方法?
什麼我不想要的是:
理想情況下,與正則表達式相匹配的DAO和方法的緩存,並根據需要自動包裝自己圍繞DAO的。
我們正在使用OSCache,所以這樣的例子會非常棒。
Spring AOP是你想要的,我想。這將使您能夠爲您的DAO自動創建代理對象,而無需手動完成全部代理對象。
雖然這是一個複雜的話題,所以我建議你read the relevant section Spring文檔。作爲一個讓你開始的想法,BeanNameAutoProxyCreator可能對你有用。 AspextJK的東西是全血的AOP方法,但它非常可怕。基於模式的AOP方法相當容易,但靈活性較差。
其中 Spring框架的重要的原則是, 非侵入性;這是想法 ,你不應該被迫 介紹框架特定的類 和接口到您的 業務/域模型。然而,在 一些地方Spring框架確實 給你介紹 Spring框架特定依賴 到你的代碼的選項:在 的理由給你這個選項是因爲在 某些情況下,這可能只是 平原更容易以 這樣的方式讀取或編碼 特定的功能塊。儘管Spring框架 (幾乎)總是爲您提供 的選擇:您可以自由決定 哪個 選項最適合您的特定使用 案例或方案。
這樣一個與 有關的選擇,這一章就是其中AOP 框架(和哪種AOP風格)到 選擇。您可以選擇AspectJ 和/或Spring AOP,並且您還可以選擇@AspectJ 批註樣式方法或 Spring XML配置樣式 方法。本章 選擇引進 @AspectJ風格的方法首先應 不能作爲該 Spring團隊傾向於在 Spring XML配置風格@AspectJ 註解風格的指示的事實。
請參閱標題爲章節6的章節。4, 「選擇使用哪種AOP申報樣式 」可以更全面地討論各種樣式的。
至於實際的緩存,你必須自己去做,但是一旦AOP鉤子被集成,這應該是直截了當的。
您可以嘗試Spring Modules提供的緩存。它通過方面做緩存,並支持多種緩存解決方案,如OSCache的,的EHCache,JBoss緩存等
您可以使用@Cacheable
註解和AOP方面,從jcabi-aspects:
@Cacheable(lifetime = 5, unit = TimeUnit.SECONDS)
public String load(URL url) {
return url.openConnection().getContent();
}