2016-09-27 43 views
0

我正在尋找在我的應用程序數據層中添加少量緩存。目標:在請求結束時緩存失效Spring

我有一些邏輯深入10-15方法。這些方法可能需要在每個步驟中訪問數據庫中的集合。現在,我在method1的調用期間查詢集合,並且在某些情況下最終將集合傳遞給5-6個調用,以避免再次查詢它。

爲了解決這個問題,我想我可以緩存查詢的結果,而不是傳遞集合,只是一次又一次地查詢它,知道我會立即收到相同的響應,而不會去數據庫。另外,爲了避免任何被棄用的對象,我的緩存失效策略將在每個http請求結束後模擬傳遞在請求開始時被查詢的集合的行爲而失效。

我使用SpringData訪問數據庫,並且正在考慮使用spring的緩存註釋來緩存存儲庫結果數據。我檢查了文檔,它需要一個Cache實現才能工作(例如EHCache或類似的)。看看他們的失效策略,我似乎無法找到任何與基於請求的無效相關的任何事情。

可以做到這一點嗎?這是解決我的問題的好方法嗎?請注意,我使用MongoDB作爲數據庫。

回答

0

事實上,您不需要緩存,因爲您的緩存持續時間是請求時間。所以你只需要把結果放在一個請求範圍bean中http://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html

在代碼爲Object Oriented之後,將method1的集合放在bean的屬性(請求作用域bean)中,並用其他方法訪問它。如果它在其他類中使用,則使用彈簧注射。