package com.casic.missiles.config;
import com.casic.missiles.config.swagger.SwaggerEntity;
import com.casic.missiles.utils.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);
}
}
}