多个字段方法参数上的Springboot可缓存键

h43kikqp  于 2023-04-30  发布在  Spring
关注(0)|答案(1)|浏览(96)

我试图在Sping Boot 应用程序中缓存静态列表,以根据某些条件获取静态列表。我在下面
Springboot v2.5.12

@Caching(cacheable =
    {
    @Cacheable( value="lists_",  key = "{#a,#b}", condition = "#b=='states'"),
    @Cacheable( value="lists_",  key = "{#a,#b}", condition = "#b=='programs'")    
    })

    public ResponseBody<List<String>> getStaticLists(String a, String b, HttpHeaders headers)
    {
        // implementaionCode
    }

的想法是为每种类型的.
但它并没有像预期的那样工作。是否有任何错误,在上述实施或我们需要使用自定义密钥生成器来生成密钥.
基于多个关键参数缓存不同的静态值。

3qpi33ja

3qpi33ja1#

当前实现的问题在于,您为同一个缓存定义了两个相互矛盾的条件。应该是这样的:

@Cacheable(value="lists_", key="{#a,#b}", condition="#b=='states' or #b=='programs'")
public ResponseBody<List<String>> getStaticLists(String a, String b, HttpHeaders headers)

相关问题