2012-02-07 36 views
1

我不知道如何創建一個新的ForwardingCache。我可以看到我應該如何創建緩存而不是ForwardingCache。我錯過了什麼(顯而易見的課程)?如何創建新的ForwardingCache?

編輯:我忘了補充一點,我需要這個轉發,所以我的聽衆可以通知緩存放。如果有更好的方式來執行後置操作,那麼請留下評論/回答。

+0

你面臨的問題到底是什麼? – 2012-02-07 09:39:21

+0

找不到如何創建ForwardingCache。 – Gaurav 2012-02-07 09:54:09

回答

1

你缺少的是在番石榴terminilogies地圖和高速緩存的基本差異。因此,在番石榴Cache中,您可以提供一種方法來計算一個值,如果不存在或者執行預加載。

看到這裏http://code.google.com/p/guava-libraries/wiki/CachesExplained#Applicability

所以,我不認爲你放的情況下會出現或不能看到的是,所產生的?

至於創建ForwadCache。如果您仍然可以看到/進一步解釋如何使用ForwadingCache,您可以基本上提供ForwardingCache.SimpleForwardingCache http://docs.guava-libraries.googlecode.com/git-history/v10.0.1/javadoc/index.html?com/google/common/cache/ForwardingCache.SimpleForwardingCache.html的具體實現以及覆蓋委託方法,當然在那裏使用Eventbus。

但是再次回到原來的問題,你可以很清楚地看到在緩存中有removeListener但沒有addListener。

只要大聲思考,你可以在CacheLoader的情況下使用EventBus或獲取操作本身(當找不到值時的計算邏輯)。

+0

謝謝。 EventBus似乎對我想要做的事情有點矯枉過正。基本上,當我的緩存中添加了某些內容時,我想檢查另一個緩存中的某些內容。而已。然而,我去讀了事件公共汽車描述,你說得對,它會給我一個更通用的告知我的聽衆的方式。我會再讀一些,但看起來EventBus是最簡單的方法。 – Gaurav 2012-02-07 11:45:51

0

與其他所有Guava Forwarding課程類似,您可以擴展ForwardingCacheForwardingCache.SimpleForwardingCache,覆蓋要攔截的方法。您希望選擇使用哪兩種取決於您是否希望在施工時或通過delegate()方法提供支持Cache實施。