package com.testor.config; import com.testor.biz.auth.interceptor.DataSignatureInterceptor; import com.testor.biz.auth.interceptor.SanyuInterceptor; import com.testor.common.interceptor.AuthInterceptor; import com.testor.common.interceptor.SignInterceptor; import com.testor.config.aspect.LogAspect; import com.tongtech.tfw.backend.common.config.HttpMessageConverterWrapper; import com.tongtech.tfw.backend.common.config.ParameterConverters; import com.tongtech.tfw.backend.common.exception.GeneralExceptionHandler; import com.tongtech.tfw.backend.common.server.UndertowServerFactoryCustomizer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.context.annotation.Bean; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.context.request.RequestContextListener; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.List; /** * SpringMvcConfiguration * * @author Ivan * @version 1.0 Created by Ivan at 2020/3/18. */ @SpringBootConfiguration public class SpringMvcConfiguration implements WebMvcConfigurer { @Autowired private SignInterceptor signInterceptor; @Bean public LogAspect getLogAspect() { return new LogAspect(); } // @Bean // @ConditionalOnClass(ServerProperties.Undertow.class) // public UndertowServerFactoryCustomizer undertowServerFactoryCustomizer() { // return new UndertowServerFactoryCustomizer(); // } @Override public void configureHandlerExceptionResolvers( List<HandlerExceptionResolver> exceptionResolvers) { exceptionResolvers.add(new GeneralExceptionHandler()); } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.forEach(HttpMessageConverterWrapper.objectMapperWrapper()); } @Bean @ConditionalOnMissingBean(RequestContextListener.class) public RequestContextListener requestContextListener() { return new RequestContextListener(); } @Bean public ParameterConverters parameterConverters() { return new ParameterConverters(); } /** * @param registry : * @return void * @author Created by Ivan at 2020/5/9. * <p>拦截器配置 */ @Override public void addInterceptors(InterceptorRegistry registry) { registry .addInterceptor(this.getApiAuthInterceptor()) .addPathPatterns("/**") .excludePathPatterns( "/auth/**", "/*.html", "/*.ico", "/webjars/**", "/swagger-resources/**", "/ureport/**", "/druid/**", "/excel/**", "/app/**", "/error/**", "/flowable/**", "/v2/api-docs/**", "/v3/api-docs/**", "/sys/login/**", "/sys/getToken", "/iam/user/**", "/iam/message/push", "/hireDepositoryManageBase/pushData", "/hireDepositoryManageBase/zlFileLoad" ); registry .addInterceptor(this.getDataSignatureInterceptor()) .addPathPatterns("/area/**") .addPathPatterns("/dict/**") .addPathPatterns("/org/**") .addPathPatterns("/resource/**") .addPathPatterns("/role/**") .addPathPatterns("/user/**") .addPathPatterns("/auth/**") .excludePathPatterns( "/*.html", "/webjars/**", "/swagger-resources/**", "/ureport/**", "/druid/**"); registry.addInterceptor(this.getSanyuInterceptor()).addPathPatterns("/**").excludePathPatterns("/iam/user/**", "/iam/message/push","/hireDepositoryManageBase/pushData","/hireDepositoryManageBase/zlFileLoad"); //registry.addInterceptor(this.signInterceptor).addPathPatterns("/**"); } @Bean public AuthInterceptor getApiAuthInterceptor() { return new AuthInterceptor(); } @Bean public DataSignatureInterceptor getDataSignatureInterceptor() { return new DataSignatureInterceptor(); } @Bean public SanyuInterceptor getSanyuInterceptor() { return new SanyuInterceptor(); } }