diff --git a/src/main/java/net/mingsoft/MSApplication.java b/src/main/java/net/mingsoft/MSApplication.java index 3641f226..5f0aa874 100644 --- a/src/main/java/net/mingsoft/MSApplication.java +++ b/src/main/java/net/mingsoft/MSApplication.java @@ -6,12 +6,15 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.context.annotation.ComponentScan; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + + @SpringBootApplication -@ComponentScan(basePackages = {"net.mingsoft"}) +@ComponentScan(basePackages = {"springfox","net.mingsoft"}) @MapperScan(basePackages={"**.dao"}) @ServletComponentScan(basePackages = {"net.mingsoft"}) +@EnableSwagger2 public class MSApplication { - public static void main(String[] args) { SpringApplication.run(MSApplication.class, args); } diff --git a/src/main/java/net/mingsoft/config/SwaggerConfig.java b/src/main/java/net/mingsoft/config/SwaggerConfig.java new file mode 100644 index 00000000..0aff4e7f --- /dev/null +++ b/src/main/java/net/mingsoft/config/SwaggerConfig.java @@ -0,0 +1,56 @@ +/** + * Copyright 2018-2020 stylefeng & fengshuonan (https://gitee.com/stylefeng) + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.mingsoft.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +/** + * swagger配置类 + * + * @author fengshuonan + * @date 2017年6月1日19:42:59 + */ +@Configuration +public class SwaggerConfig { + + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() + // 自行修改为自己的包路径 + .apis(RequestHandlerSelectors.basePackage("net.mingsoft.*.action.web")).paths(PathSelectors.any()) + .build(); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder().title("api文档").description("restful 风格接口") + // 服务条款网址 + // .termsOfServiceUrl("") + .version("1.0") + // .contact(new Contact("hello", "url", "email")) + .build(); + } + +} diff --git a/src/main/java/net/mingsoft/config/WebConfig.java b/src/main/java/net/mingsoft/config/WebConfig.java index eaf3dfd6..07eaa615 100644 --- a/src/main/java/net/mingsoft/config/WebConfig.java +++ b/src/main/java/net/mingsoft/config/WebConfig.java @@ -1,7 +1,5 @@ package net.mingsoft.config; -import java.util.Arrays; - import org.springframework.aop.Advisor; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.JdkRegexpMethodPointcut; @@ -11,8 +9,9 @@ import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextListener; -import org.springframework.web.servlet.config.annotation.InterceptorRegistration; +import org.springframework.web.servlet.DispatcherServlet; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -21,30 +20,54 @@ import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator; import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; -import net.mingsoft.basic.interceptor.ActionInterceptor; -import cn.hutool.core.collection.CollectionUtil; +import net.mingsoft.basic.interceptor.ActionInterceptor; +import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration public class WebConfig implements WebMvcConfigurer { - + @Bean public ActionInterceptor actionInterceptor() { return new ActionInterceptor(); } + + @Override + public void configurePathMatch(PathMatchConfigurer configurer) { + //启用.do后缀 + configurer.setUseRegisteredSuffixPatternMatch(true); + } + /** * 增加对rest api鉴权的spring mvc拦截器 */ @Override public void addInterceptors(InterceptorRegistry registry) { // 排除配置 - registry.addInterceptor(actionInterceptor()).excludePathPatterns(CollectionUtil.newLinkedList("/static/**")); + registry.addInterceptor(actionInterceptor()).excludePathPatterns("/static/**","/app/**","/webjars/**","/*.html","/*.htm"); } + + @Bean + public ServletRegistrationBean servletRegistrationBean(DispatcherServlet dispatcherServlet) { + //只拦截.do的请求 + ServletRegistrationBean servletServletRegistrationBean = new ServletRegistrationBean<>(dispatcherServlet); + servletServletRegistrationBean.addUrlMappings("*.do","/v2/api-docs","/swagger-resources","/swagger-resources/configuration/security","/swagger-resources/configuration/ui"); + return servletServletRegistrationBean; + } + + @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { + // swagger + registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); + + registry.addResourceHandler("/html/**").addResourceLocations("classpath:/html/"); + registry.addResourceHandler("/app/**").addResourceLocations("classpath:/app/"); registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); + } /** @@ -84,7 +107,7 @@ public class WebConfig implements WebMvcConfigurer { @Bean public JdkRegexpMethodPointcut druidStatPointcut() { JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut(); - String patterns = "cn.stylefeng.guns.modular.*.service.*"; + String patterns = "net.mingsoft.*.biz.*"; // 可以set多个 druidStatPointcut.setPatterns(patterns); return druidStatPointcut; @@ -111,17 +134,18 @@ public class WebConfig implements WebMvcConfigurer { return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor()); } -// /** -// * xssFilter注册 -// */ -// @Bean -// public FilterRegistrationBean xssFilterRegistration() { -// XssFilter xssFilter = new XssFilter(); -// xssFilter.setUrlExclusion(Arrays.asList("/static/")); -// FilterRegistrationBean registration = new FilterRegistrationBean(xssFilter); -// registration.addUrlPatterns("/*"); -// return registration; -// } + // /** + // * xssFilter注册 + // */ + // @Bean + // public FilterRegistrationBean xssFilterRegistration() { + // XssFilter xssFilter = new XssFilter(); + // xssFilter.setUrlExclusion(Arrays.asList("/static/")); + // FilterRegistrationBean registration = new + // FilterRegistrationBean(xssFilter); + // registration.addUrlPatterns("/*"); + // return registration; + // } /** * RequestContextListener注册