2017-01-31 26 views
2

使用spring-boot及其緩存機制,是否可以將作爲集合返回的所有實體自動存儲到緩存中?使用註釋將所有返回的元素放入Spring-Boot緩存中

例如圖片下列知識庫方法:

@Query("...") 
List<Foo> findFooByBar(Bar bar); 

我想用一個在Spring緩存插入這些,一個,這意味着將有是N插入(一個用於列表中的每個元素)而不僅僅是一個(整個列表)。

例子:

@Query("...") 
@CachePut(value = "foos", key = "result.each.id") 
List<Foo> findFooByBar(Bar bar); 
+0

我登錄樞紐的JIRA的問題,因爲從在'源代碼一目瞭然CacheAspectSupport'好像這是不可能的。 https://jira.spring.io/browse/SPR-15213 –

回答

1

前的某個時候,另一個人問過類似的/相關question on SO和我有example一起提供一個答案。

如您所知,默認情況下,開箱即用的彈簧不按照您的建議處理多個鍵/值,儘管我喜歡您的想法並且您的示例/ UC有效。

然而,通常情況下,您可以使用中間解決方案達到您想要的效果,只需做一些額外的工作即可。 彈簧Open/Closed principle的優秀示例,Spring's Cache Abstraction中的2個主要抽象是CacheCacheManager接口。

通常情況下,你可以選擇一個現有的實施和「適應」無論是CacheCacheManager,或兩者兼而有之,正如我在example所做的那樣。

雖然不理想或方便,但希望這會給你一些想法,直到可能SPR-15213被認爲(雖然maybe not)。

乾杯, 約翰

+0

謝謝約翰,你給了我一些很好的想法。 –