使用spring-boot及其缓存机制,是否可以将作为集合返回的所有实体逐个自动存储到缓存中?
例如,描述以下存储库方法:
@Query("...")
List<Foo> findFooByBar(Bar bar);
我想将它们逐个插入Spring Cache,这意味着会有N个插入(列表中的每个元素一个)而不是一个(整个列表)。
示例:
@Query("...")
@CachePut(value = "foos", key = "result.each.id")
List<Foo> findFooByBar(Bar bar);
答案 0 :(得分:2)
前一段时间,另一个人问过类似的/相关的question on SO,我提供了一个答案和一个example。
如您所知,默认情况下,开箱即用的 Spring 不会以您建议的方式处理多个键/值,但我喜欢您的想法和您的示例/ UC是有效的。
然而,很多时候,您只需要一些额外的工作就可以使用中间解决方案来实现您想要的效果。 Spring 是Open/Closed principle的绝佳示例,Spring's Cache Abstraction中的2个主要抽象是Cache和CacheManager接口。
通常,您可以选择现有的实施并“调整”Cache
或CacheManager
或两者,就像我在example中所做的那样。
虽然不是那么理想或方便,但希望这会给你一些想法,直到考虑SPR-15213(尽管maybe not)。
干杯, 约翰