1

考虑以下服务,我如何使用/actuator/refresh端点动态修改缓存配置

@Service
@Slf4j
public class GreetingService {

    @Cacheable("greeting")
    public String greet(String name) {
       log.info("Greeting: {}", name);
       return "Hello " + name ;
    }
}

使用以下默认配置

spring
  cache:
    caffeine:
      spec: maximumSize=100,expireAfterAccess=600s

假设设置为maximumSize=50,expireAfterAccess=300s

GreetingService中添加@RefreshScope不起作用。不知何故,我需要指示 Spring Boot 重新创建 CacheManager?

我在这里有一个支持项目:

  1. https://github.com/altfatterz/refreshscope-demo
  2. https://github.com/altfatterz/refreshscope-demo-config

谢谢。

4

1 回答 1

0

您正在使用执行器,因此您可能还存在缓存执行器。因此,对于您使用此命令进行的案例测试: curl 'http://server:port/actuator/caches/greeting' -i -X DELETE

注意:我没有测试过,这只是一个想法

于 2019-01-14T21:07:56.583 回答