java - HandlerInterceptor spring - 排除管理端口上的请求
问题描述
我希望我的 HandlerInterceptor 在我的 Spring Boot 应用程序中,不要在管理端口上的请求上运行。
management.port = 9091
我可以想到两种方法,但我正在寻找一种更标准的方法。
一种是从 HandlerInterceptor 中检查端口:
@Override
public boolean preHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull Object handler) {
if(request.getLocalPort() == managementPort){
return true;
}
else{
....
}
}
第二个是在注册拦截器时排除所有与 managementPort 相关的路径:
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).excludePathPatterns(managementPortEndpoints);
}
这很容易不同步。
有没有更本地的方法来实现它?(某种弹簧配置)
解决方案
一旦对 management.port 的所有访问都是对以 /actuator 开头的 URL 的请求,spring 将不会对请求运行过滤器和拦截器。
所以,这似乎是解决问题的方法