Spring开机+咖啡因缓存+检查header

Spring boot + Caffeine cache + Check header

我正在尝试将缓存(咖啡因)与 Spring 引导一起使用,但我遇到了问题。我需要在每次调用中检查 header“header-name”,但应用程序正在缓存它,因此在第一次使用正确的 header 请求后,不管我发送什么 header 和应用程序不会检查它,只是从缓存中返回数据,无论如何我可以强制 spring 检查 header 然后从缓存中获取数据吗?

 @GetMapping("/request-a")
 @Cacheable(cacheNames = "cachename", key = "#root.methodName")
 public ResponseEntity<?> makeRequest(@RequestHeader("header-name") String headerName) {


    this.authConfig.headerCheck(headerName);

    /*
    code
    */    
 }

我已经使用了 header "Cache-Control:no-cache" 但没有解决我的问题。

提前致谢。

Edit1:方法“headerCheck”只是检查它是否等于另一个字符串或不为空。

找到解决方案:

创建一个实现 HandlerInterceptor 的类并使用 preHandle 方法。

@Component
public class CheckHeaderInterceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
        throws Exception {
    
  // validate what you want, on error return false
  // if everything its ok, return true
  }
}

然后注册处理程序:

public class WebMvcConfig implements WebMvcConfigurer {

@Autowired
private CheckHeaderInterceptor interceptor;

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(interceptor).addPathPatterns("url that you wannna use handler");
 }
}