2009-07-28 134 views
1

如果我有一堆DAO的一堆getXXX方法,我想要所有或一些明確的緩存方法列表有什麼辦法,我可以用Spring透明地做到這一點?什麼是春季最簡單/最透明的緩存方法?

什麼我不想要的是:

  • 要更改源代碼/加 anotations
  • 手動必須打造一批代理豆的數量DAO的,並重新連接它們。

理想情況下,與正則表達式相匹配的DAO和方法的緩存,並根據需要自動包裝自己圍繞DAO的。

我們正在使用OSCache,所以這樣的例子會非常棒。

回答

0

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鉤子被集成,這應該是直截了當的。

0

您可以嘗試Spring Modules提供的緩存。它通過方面做緩存,並支持多種緩存解決方案,如OSCache的,的EHCache,JBoss緩存等

1

您可以使用@Cacheable註解和AOP方面,從jcabi-aspects

@Cacheable(lifetime = 5, unit = TimeUnit.SECONDS) 
public String load(URL url) { 
    return url.openConnection().getContent(); 
} 
相關問題