package com.casic.missiles; import com.casic.missiles.swagger.SwaggerEntity; import com.casic.missiles.util.SpringContextUtil; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import com.google.common.collect.Lists; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import javax.annotation.PostConstruct; /** * @Description: * @Author: wangpeng * @Date: 2022/11/9 14:51 */ @Configuration //声明该类为配置类 @EnableSwagger2 //声明启动Swagger2 @EnableKnife4j public class SwaggerConfig{ // @Bean // public Docket customDocket() { // return new Docket(DocumentationType.SWAGGER_2) // .apiInfo(apiInfo()) // .select() // .apis(RequestHandlerSelectors.basePackage("com.casic.missiles.controller"))//扫描的包路径 // .paths(PathSelectors.any()) // .build(); // } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("物联网设备管理平台")//文档说明 .version("1.0.0")//文档版本说明 .build(); } /** * 注入自定义swagger分组 */ @PostConstruct public void importDocketGroup() { // 循环SwaggerEntity中的所有定义 for (SwaggerEntity value : SwaggerEntity.values()) { // 注册bean Docket docket = SpringContextUtil.registerBean(null, Docket.class, Lists.newArrayList(DocumentationType.SWAGGER_2), null); // 执行docket的一些定义 docket // 是否启用Swagger .enable(true) // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息) .apiInfo(apiInfo()) // 设置哪些接口暴露给Swagger展示 .select() // 设置SwaggerEntity中定义的需要扫描的包 .apis(value.getApis()) // 扫描所有 .apis(RequestHandlerSelectors.any()) .paths(value.getPaths()) .build() // 设置分组名 .groupName(value.getGroupName()); // 设置安全模式,swagger可以设置访问token // .securitySchemes(securitySchemes()) // .securityContexts(securityContexts()) // .pathMapping(pathMapping); } } }