package com.pcitc.aims.project.core.config; import java.util.ArrayList; import java.util.List; import io.swagger.annotations.Contact; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.format.FormatterRegistry; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.HandlerMethodReturnValueHandler; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.*; import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI; import io.swagger.annotations.ApiOperation; import springfox.documentation.service.Parameter; 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.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * @Author */ @Configuration @EnableSwagger2 @EnableSwaggerBootstrapUI public class Swagger2Config implements WebMvcConfigurer { @Override public void configurePathMatch(PathMatchConfigurer configurer) { } @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { } @Override public void configureAsyncSupport(AsyncSupportConfigurer configurer) { } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { } @Override public void addFormatters(FormatterRegistry registry) { } @Override public void addInterceptors(InterceptorRegistry registry) { } /** * 显示swagger-ui.html文档展示页,还必须注入swagger资源: * * @param registry */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } @Override public void addCorsMappings(CorsRegistry registry) { } @Override public void addViewControllers(ViewControllerRegistry registry) { } @Override public void configureViewResolvers(ViewResolverRegistry registry) { } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { } @Override public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) { } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { } @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { } @Override public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) { } @Override public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) { } @Override public Validator getValidator() { return null; } @Override public MessageCodesResolver getMessageCodesResolver() { return null; } //------------------------------------所有-------------------- /** * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等 * * @return Docket */ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //此包路径下的类,才生成接口文档 .apis(RequestHandlerSelectors.basePackage("com.pcitc.aims.project")) //加了ApiOperation注解的类,才生成接口文档 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); //.globalOperationParameters(); } //------------------------------------报表-------------------- @Bean public Docket reportApi() { return new Docket(DocumentationType.SWAGGER_2) .groupName("reportApi") .genericModelSubstitutes(DeferredResult.class) // .genericModelSubstitutes(ResponseEntity.class) .useDefaultResponseMessages(false) .forCodeGeneration(true) .select() .apis(RequestHandlerSelectors.basePackage("com.pcitc.aims.project.report")) .paths(PathSelectors.any()) .build() .apiInfo(reportApiInfo()); } private ApiInfo reportApiInfo() { return new ApiInfoBuilder() .title("报表")//大标题 .description("报表api")//详细描述 .version("1.0")//版本 .build(); } //------------------------------------办公-------------------- @Bean public Docket officeApi() { return new Docket(DocumentationType.SWAGGER_2) .groupName("officeApi") .genericModelSubstitutes(DeferredResult.class) // .genericModelSubstitutes(ResponseEntity.class) .useDefaultResponseMessages(false) .forCodeGeneration(true) .select() .apis(RequestHandlerSelectors.basePackage("com.pcitc.aims.project.office")) .paths(PathSelectors.any()) .build() .apiInfo(reportApiInfo()); } private ApiInfo officeApiInfo() { return new ApiInfoBuilder() .title("办公")//大标题 .description("办公api")//详细描述 .version("1.0")//版本 .build(); } //------------------------------------系统配置-------------------- @Bean public Docket sysApi() { return new Docket(DocumentationType.SWAGGER_2) .groupName("sysApi") .genericModelSubstitutes(DeferredResult.class) // .genericModelSubstitutes(ResponseEntity.class) .useDefaultResponseMessages(false) .forCodeGeneration(true) .select() .apis(RequestHandlerSelectors.basePackage("com.pcitc.aims.project.sys")) .paths(PathSelectors.any()) .build() .apiInfo(reportApiInfo()); } private ApiInfo syspiInfo() { return new ApiInfoBuilder() .title("系统配置")//大标题 .description("系统配置api")//详细描述 .version("1.0")//版本 .build(); } //----------------------------计划-------------------------- @Bean public Docket planApi() { return new Docket(DocumentationType.SWAGGER_2) .groupName("planApi") .genericModelSubstitutes(DeferredResult.class) // .genericModelSubstitutes(ResponseEntity.class) .useDefaultResponseMessages(false) .forCodeGeneration(true) .select() .apis(RequestHandlerSelectors.basePackage("com.pcitc.aims.project.plan")) .paths(PathSelectors.any()) .build() .apiInfo(reportApiInfo()); } private ApiInfo planApiInfo() { return new ApiInfoBuilder() .title("计划")//大标题 .description("计划api")//详细描述 .version("1.0")//版本 .build(); } //----------------------------字典-------------------------- @Bean public Docket dicApi() { return new Docket(DocumentationType.SWAGGER_2) .groupName("dicApi") .genericModelSubstitutes(DeferredResult.class) // .genericModelSubstitutes(ResponseEntity.class) .useDefaultResponseMessages(false) .forCodeGeneration(true) .select() .apis(RequestHandlerSelectors.basePackage("com.pcitc.aims.project.dic")) .paths(PathSelectors.any()) .build() .apiInfo(reportApiInfo()); } private ApiInfo dicApiInfo() { return new ApiInfoBuilder() .title("字典")//大标题 .description("字典api")//详细描述 .version("1.0")//版本 .build(); } //----------------------------公共-------------------------- @Bean public Docket commonApi() { return new Docket(DocumentationType.SWAGGER_2) .groupName("commonApi") .genericModelSubstitutes(DeferredResult.class) // .genericModelSubstitutes(ResponseEntity.class) .useDefaultResponseMessages(false) .forCodeGeneration(true) .select() .apis(RequestHandlerSelectors.basePackage("com.pcitc.aims.project.common")) .paths(PathSelectors.any()) .build() .apiInfo(reportApiInfo()); } private ApiInfo commonApiInfo() { return new ApiInfoBuilder() .title("公共")//大标题 .description("公共api")//详细描述 .version("1.0")//版本 .build(); } /** * api文档的详细信息函数,注意这里的注解引用的是哪个 * * @return */ private ApiInfo apiInfo() { return new ApiInfoBuilder() // //大标题 .title("项目 后台服务API接口文档") // 版本号 .version("1.0") // .termsOfServiceUrl("NO terms of service") // 描述 .description("restful 风格接口") // 作者 // .contact(new Contact("scott", "http://jeecg.org", "jeecgos@163.com")) // .license("The Apache License, Version 2.0") // .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html") .build(); } }
swagger添加接口分组
最新推荐文章于 2024-08-13 16:33:53 发布