java – 使用注释将所有返回的元素放入Spring-Boot缓存中

使用
spring-boot及其缓存机制,是否可以将作为集合返回的所有实体逐个自动存储到缓存中?

例如,想象下面的Repository方法:

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

我想将它们逐个插入Spring Cache中,这意味着将有N个插入(列表中的每个元素一个)而不是一个(整个列表).

例:

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

最佳答案 前一段时间,另一个人问了类似的/相关的
question on SO,我提供了一个答案和一个
example.

如您所知,默认情况下,开箱即用的Spring不会按照您建议的方式处理多个键/值,尽管我喜欢您的想法并且您的示例/ UC有效.

但是,通常情况下,只需要一些额外的工作,您就可以使用中间解决方案来实现您想要的效果. Spring是Open/Closed principle的一个很好的例子,Spring’s Cache Abstraction的2个主要抽象是CacheCacheManager接口.

通常,您可以选择现有的实现并“调整”Cache或CacheManager,或两者,就像我在example中所做的那样.

虽然不是那么理想或方便,但希望这会给你一些想法,直到考虑SPR-15213(尽管maybe not).

干杯,
约翰

点赞