当前位置: 首页 > 知识库问答 >
问题:

如何在@Cacheable注释中使用@Cacheput?

党浩阔
2023-03-14

我正在从下面的方法中获取电影列表,并带有@Cacheable注释。由于它没有任何参数,我将key设置为#root.method.name。

@Cacheable(value="movieFindCache", key = "#root.method.name")
public List<Movie> getMovies(){
    ...
    return movies;
}

现在,我想添加一个新的电影,同样应该添加到上述缓存。

@CachePut(value="movieFindCache", key="getMovies")
public void addNewMovie(){
    // create and add new movie to movies list
}

我试过这个,但它给了我例外。

    org.springframework.expression.spel.SpelEvaluationException: 
Property or field 'getMovies' cannot be found on object of type 'org.springframework.cache.interceptor.CacheExpressionRootObject' - maybe not public?

我们可以在这里使用@CachePut注释,还是有其他方法?

共有1个答案

劳亦
2023-03-14

key是一种Spring表达式语言http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html

尝试“”

@CachePut(value="movieFindCache", key="'getMovies'")
 类似资料: