我正在使用 Java 8 和 Spring 1.2.3 构建一个在 Tomcat 7 容器内运行的应用程序。
我确实使用一个非常简单的 HandlerInterceptor
来拦截对我的 Web 应用程序的每个调用,它记录了创建响应所需的总时间以及每个请求的返回代码。
我通过简单地添加 spring-boot-starter-actuator
依赖项来激活执行器端点,并通过调用添加拦截器
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Autowired
private Application application;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(application.executeTimeInterceptor());
}
}
显然,Spring Boot Actuator 管理的所有端点(/info
、/health
等)都不会被拦截:我如何确保拦截器拦截对我的应用程序进行的所有调用,包括调用执行器提供的端点的调用?
最佳答案
在 Spring Boot 1.x 中,您可以使用 EndpointHandlerMappingCustomizer
来配置 Actuator 端点的拦截器。例如:
@Bean
public EndpointHandlerMappingCustomizer mappingCustomizer() {
return new EndpointHandlerMappingCustomizer() {
@Override
public void customize(EndpointHandlerMapping mapping) {
mapping.setInterceptors(new Object[] { application.executeTimeInterceptor() });
}
};
}
关于java - 如何将 HandlerInterceptor 应用于 Spring Boot Actuator 端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839350/