Как ограничить путь HttpTraceFilter?

Я использую spring-actuator и хотите ограничить путь для регистрации запросов / ответов трассировки. Пробовал следующим образом, но все пути, которые вы вызывали, регистрируются в http://localhost:8080/actuator/httptrace:

@Bean
@ConditionalOnBean(HttpTraceFilter.class)
public FilterRegistrationBean traceFilterRegistration(HttpTraceFilter filter) {
    FilterRegistrationBean registration = new FilterRegistrationBean(filter);
    registration.setUrlPatterns("/test/*"));
    return registration;
}

В конечной точке httptrace я все еще вижу запрос к http://localhost:8080/actuator/mappings или же http://localhost:8080/favicon.ico, Но они должны быть скрыты из-за моего шаблона отображения карт, не так ли?

Sidenote: Я заметил, что при выходе из @ConditionalOnBean это работает как ожидалось с ограниченным путем. Вероятно, это связано с порядком инициализации фильтра трассировки...

1 ответ

Чтобы перехватить запрос согласно вашему требованию, вы можете сделать это следующим образом:

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CustomInterceptor implements HandlerInterceptor{

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
    //your custom logic here.
    return true;
}
}

Затем зарегистрируйтесь здесь, чтобы перехватить нужный вам путь:

@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry){
    registry.addInterceptor(new 
CustomInterceptor()).addPathPatterns("/actuator/**","/test/**");
}
}
Другие вопросы по тегам