春季启动+咖啡因缓存+检查标题



我试图在Spring引导中使用缓存(咖啡因(,但我遇到了问题。我需要检查标题";标题名称";在每次调用中,但应用程序都在缓存它,所以在第一次请求具有正确标头后,无论我发送什么标头,应用程序都不会检查它,只是从缓存中返回数据,我是否可以强制spring检查标头,然后从缓存中获取数据?

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

this.authConfig.headerCheck(headerName);
/*
code
*/    
}

我已经使用了头";缓存控制:无缓存";并没有解决我的问题。

提前谢谢。

第1版:方法";headerCheck";只需检查它是否等于另一个String或不为null。

找到了一个解决方案:

创建一个实现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");
}
}

最新更新