首页 > 解决方案 > 我的 api 有时有时需要缓存数据,有时不需要?

问题描述

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

标签: javaspringspring-bootjava-8clear-cache

解决方案


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

@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() {

 }

推荐阅读