我的api有时有时需要缓存数据,有时不是必需的?

时间:2018-07-18 03:28:09

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

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

1 个答案:

答案 0 :(得分:0)

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

 }