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

Wou*_*ens 5 java caching annotations spring-boot spring-cache

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

例如图片下面的 Repository 方法:

@Query("...")
List<Foo> findFooByBar(Bar bar);
Run Code Online (Sandbox Code Playgroud)

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

例子:

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

Joh*_*lum 4

不久前,另一个人问了一个类似/相关的问题,我提供了一个答案和一个例子

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

然而,很多时候,您只需做一些额外的工作,就可以使用中间解决方案来实现您想要的目标。 Spring开放/关闭原则的一个很好的例子, Spring 缓存抽象中的两个主要抽象是CacheCacheManager接口。

通常,您可以选择一个现有的实现并“适应”其中一个Cache或两个,或者两者都“适应”,正如我在示例CacheManager中所做的那样。

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

干杯,约翰