New file |
| | |
| | | package com.cl.config; |
| | | |
| | | |
| | | |
| | | import com.cl.common.json.JacksonObjectMapper; |
| | | import com.cl.interceptor.JwtTokenInterceptor; |
| | | import com.cl.util.LoginAttemptService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.http.converter.HttpMessageConverter; |
| | | import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; |
| | | import org.springframework.web.servlet.config.annotation.InterceptorRegistry; |
| | | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; |
| | | import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; |
| | | import springfox.documentation.builders.ApiInfoBuilder; |
| | | import springfox.documentation.builders.ParameterBuilder; |
| | | import springfox.documentation.builders.PathSelectors; |
| | | import springfox.documentation.builders.RequestHandlerSelectors; |
| | | import springfox.documentation.schema.ModelRef; |
| | | import springfox.documentation.service.ApiInfo; |
| | | import springfox.documentation.service.Parameter; |
| | | import springfox.documentation.spi.DocumentationType; |
| | | import springfox.documentation.spring.web.plugins.Docket; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 配置类,注册web层相关组件 |
| | | */ |
| | | @Configuration |
| | | @Slf4j |
| | | public class WebMvcConfiguration extends WebMvcConfigurationSupport { |
| | | |
| | | @Autowired |
| | | private JwtTokenInterceptor jwtTokenInterceptor; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 注册自定义拦截器 |
| | | * |
| | | * @param registry |
| | | */ |
| | | protected void addInterceptors(InterceptorRegistry registry) { |
| | | log.info("开始注册自定义拦截器..."); |
| | | registry.addInterceptor(jwtTokenInterceptor) |
| | | .addPathPatterns("/user/**","/data/**","/institution/**") |
| | | .excludePathPatterns("/user/login","user/loginOut","/user/passwordBeforeLogin","/data/screen", |
| | | "/institution/getAll/**","/data/getYearList","/data/getAssistiveDeviceTotal"); |
| | | } |
| | | |
| | | /** |
| | | * 通过knife4j生成接口文档 |
| | | * @return |
| | | */ |
| | | @Bean |
| | | public Docket docket() { |
| | | ApiInfo apiInfo = new ApiInfoBuilder() |
| | | .title("残联大屏项目接口文档") |
| | | .version("3.0") |
| | | .description("残联大屏项目接口文档") |
| | | .build(); |
| | | // 定义请求头参数 |
| | | ParameterBuilder tokenParamBuilder = new ParameterBuilder(); |
| | | tokenParamBuilder.name("token") // 参数名 |
| | | .description("请求头token") // 描述 |
| | | .modelRef(new ModelRef("string")) |
| | | .parameterType("header") // 参数类型为请求头 |
| | | .required(false) // 是否必填 |
| | | .build(); |
| | | List<Parameter> parameters = new ArrayList<>(); |
| | | parameters.add(tokenParamBuilder.build()); |
| | | Docket docket = new Docket(DocumentationType.SWAGGER_2) |
| | | |
| | | .select() |
| | | .apis(RequestHandlerSelectors.basePackage("com.cl.controller")) |
| | | .paths(PathSelectors.any()) |
| | | .build() |
| | | .globalOperationParameters(parameters) |
| | | .apiInfo(apiInfo); // 全局设置请求头参数; |
| | | return docket; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 设置静态资源映射 |
| | | * @param registry |
| | | */ |
| | | protected void addResourceHandlers(ResourceHandlerRegistry registry) { |
| | | // For Springfox 3.x |
| | | registry.addResourceHandler("/swagger-ui/**") |
| | | .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/") |
| | | .resourceChain(false); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 扩展Spring MVC框架的消息转换器 |
| | | * @param converters |
| | | */ |
| | | @Override |
| | | protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) { |
| | | log.info("扩展消息转换器"); |
| | | //创建一个消息装换器对象 |
| | | MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); |
| | | //需要为消息转换器设置一个对象转换器,对象装换器可以将java对象序列化为json数据 |
| | | converter.setObjectMapper(new JacksonObjectMapper()); |
| | | //将自己的消息转换器加入到容器中 |
| | | converters.add(0,converter); |
| | | } |
| | | |
| | | /** |
| | | * 登录密码错误次数校验 |
| | | */ |
| | | @Bean |
| | | public LoginAttemptService loginAttemptService() { |
| | | return new LoginAttemptService(); |
| | | } |
| | | } |