package com.nokia.request_log.config; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.DispatcherServlet; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import com.nokia.request_log.interceptor.RequestLogHandlerInterceptor; import com.nokia.request_log.servlet.RequestLogDispatcherServlet; /** * 自动配置类,需要在resuources/META-INF/spring.factories文件进行配置 */ @Configuration @ConditionalOnProperty(name = "request.log.enable", havingValue = "true", matchIfMissing = false) public class RequestLogAutoConfiguration implements WebMvcConfigurer { /** * 添加拦截器 */ @Override public void addInterceptors(InterceptorRegistry registry) { // 添加日志拦截器 registry.addInterceptor(new RequestLogHandlerInterceptor()).addPathPatterns("/**"); } /** * 注入自定义的RequestLogDispatcherServlet替代默认的DispatcherServlet */ @Bean @Qualifier(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_BEAN_NAME) public DispatcherServlet dispatcherServlet() { return new RequestLogDispatcherServlet(); } }