【问题标题】:my api sometimes need cache data sometimes and sometimes not required?我的 api 有时有时需要缓存数据,有时不需要?
【发布时间】:2018-07-18 03:28:09
【问题描述】:

我的服务有时需要缓存数据,有时有时不需要,所以我想写一个可以在不需要时清除缓存的方法,并且#可以有人帮我创建一个安静的 java 8 spring boot#

【问题讨论】:

    标签: java spring spring-boot java-8 clear-cache


    【解决方案1】:

    Spring 提供了可以帮助您实现此目的的注释。如果有条件需要缓存,例如可以使用@Cacheable 注释的condition 参数,例如:

    @Cacheable(cacheNames="stuff", condition="#cached")
    public List<Stuff> findAll(boolean cached) {
        // ...
    }
    

    在这种情况下,如果你调用findAll(true),它会返回缓存的结果,而如果你调用findAll(false),它会表现得好像没有注解一样。

    从中创建 REST API 并不难,因为您的 cached 参数也可能来自请求参数:

    @GetMapping("/api/stuff")
    @Cacheable(cacheNames="stuff", condition="#cached")
    public List<Stuff> findAll(@RequestParam boolean cached) {
        // ...
    }
    

    另外,如果要清除缓存,可以使用@CacheEvict注解:

    @CacheEvict("stuff")
    public void clearCache() {
    }
    

    和以前一样,你可以把它变成一个端点:

     @DeleteMapping("/api/stuff/cache")
     @CacheEvict("stuff")
     @ResponseStatus(HttpStatus.NO_CONTENT)
     public void clearCache() {
    
     }
    

    【讨论】:

    • 那么就不需要在clearcache(){.......}中写任何代码了吗?
    • @CacheEvict 为你清除缓存,所以基本上你不需要任何代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多