• SpringBoot Swagger3.0配置


    1、导入Maven依赖

            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-boot-starter</artifactId>
                <version>3.0.0</version>
            </dependency>

    2、配置application.yml

    swagger:
      enable: true
      application-name: xxx系统API说明
      application-version: 1.0
      application-description: springfox swagger 3.0整合Demo
      try-host: http://localhost:${server.port}

    3、添加实体类接收swagger配置信息

    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component
    @ConfigurationProperties("swagger")
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class SwaggerProperties {
        /**
         * 是否开启swagger,生产环境一般关闭,所以这里定义一个变量
         */
        private Boolean enable;
    
        /**
         * 项目应用名
         */
        private String applicationName;
    
        /**
         * 项目版本信息
         */
        private String applicationVersion;
    
        /**
         * 项目描述信息
         */
        private String applicationDescription;
    
        /**
         * 接口调试地址
         */
        private String tryHost;
    
    }

    4、Swagger配置类设置

    @Configuration
    public class SwaggerConfig implements WebMvcConfigurer {
    
        private final SwaggerProperties swaggerProperties;
    
        public SwaggerConfig(SwaggerProperties swaggerProperties) {
            this.swaggerProperties = swaggerProperties;
        }
    
    
        //可以创建多个Docket对象,添加进@Bean中 并使用 .groupName("张*") 添加多个分组,前提是名称不要重复
        @Bean
        public Docket createRestApi() {
    
            return new Docket(
                    DocumentationType.OAS_30)
                    .pathMapping("/")
                    .groupName("张*")
                    // 定义是否开启swagger,false为关闭,可以通过变量控制
                    .enable(swaggerProperties.getEnable())
    
                    // 将api的元信息设置为包含在json ResourceListing响应中。
                    .apiInfo(apiInfo())
    
                    // 接口调试地址
                    .host(swaggerProperties.getTryHost())
    
                    // 选择哪些接口作为swagger的doc发布
                    .select()
                    //RequestHandlerSelectors 配置要扫描接口的方式
                    //RequestHandlerSelectors.basePackage("") //指定要扫描的包
                    //any() 扫描全部
                    //none() 都不扫描
                    //.withClassAnnotation(RestController.class) 扫描类上的注解,比如这个只会扫描类上有RestController注解的类
                    //.withMethodAnnotation(GetMapping.class) 扫描方法上的注解
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.any())
                    .build()
    
                    // 支持的通讯协议集合
                    .protocols(newHashSet("https", "http"));
        }
    
        /**
         * API 页面上半部分展示信息
         * 可以new ApiInfo对象,到ApiInfo里面去看源码
         */
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().title(swaggerProperties.getApplicationName() + " Api Doc")
                    .description(swaggerProperties.getApplicationDescription())
                    .contact(new Contact("zhang", "com.z.cn", "1348359420@qq.com"))
                    .version("Application Version: " + swaggerProperties.getApplicationVersion() + ", Spring Boot Version: " + SpringBootVersion.getVersion())
                    .build();
        }
    
        @SafeVarargs
        private final <T> Set<T> newHashSet(T... ts) {
            if (ts.length > 0) {
                return new LinkedHashSet<>(Arrays.asList(ts));
            }
            return null;
        }
    
    
    }

    5、访问API地址

    http://localhost:8080/swagger-ui/
    springfox-swagger-ui-3.0.0.jar 下 META-INF.resources.webjars.springfox-swagger-ui

    6、实体类注解说明

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ApiModel("用户实体类")
    public class User {
    
        @ApiModelProperty("主键")
        private int id;
        @ApiModelProperty("登录账号")
        private String login;
        @ApiModelProperty("密码")
        private String password;
        @ApiModelProperty("角色权限")
        private String role;
    }

    7、Controller注解说明

       //方法说明注解 @ApiOperation
        @ApiOperation("获取全部用户")
        @RequestMapping("user/getAll")
        @ResponseBody
        public List<User> getAll(){
            return  userService.selectAll();
        }

    8、更多操作参考CSDN

     Swagger 3.0配置整合使用教程_南伯基尼-CSDN博客

  • 相关阅读:
    jenkins代码自动部署
    jenkins安装
    git图形管理工具
    gitlab自动备份恢复与卸载
    linux下获取外网IP
    网站安全webshell扫描
    jQuery动画效果实现
    form表单中的enctype属性什么意思?
    你那么努力又怎么样!
    话语
  • 原文地址:https://www.cnblogs.com/harriets-zhang/p/14499870.html
Copyright © 2020-2023  润新知