zoukankan      html  css  js  c++  java
  • springboot整合Swagger2

    SpringBoot集成Swagger

    新建一个springboot web项目

    导入依赖

    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>

    编写一个hello工程

    编写swagger == >config

    package com.cjh.springbootswagger.config;
    
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    /**
     * @author
     * @site
     * @company
     * @create 2020-10-16 10:47
     */
    @Configuration
    @EnableSwagger2 //开启swagger
    public class SwaggerConfig {
    }

    浏览器访问:http://localhost:8080/swagger-ui.html

     配置Swagger Docket

    package com.cjh.springbootswagger.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    import java.util.ArrayList;
    
    /**
     * @author
     * @site
     * @company
     * @create 2020-10-16 10:47
     */
    @Configuration
    @EnableSwagger2 //开启swagger
    public class SwaggerConfig {
    
    
        @Bean  //配置swagger的docket实列
        public Docket docket(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo());
        }
    
    
        private ApiInfo apiInfo(){
            //作者信息
            Contact contact = new Contact("作者","url","邮箱");
            return new ApiInfo(
                    "SpringBoot集成Swagger", //标题
                    "SpringBoot集成Swagger", //描述
                    "1.0",//版本
                    "http://localhost:8080/swagger-ui.html",
                    contact,
                    "Apache 2.0",
                    "http://www.apache.org/licenses/LICENSE-2.0",
                    new ArrayList());
        }
    }

    配置Swagger扫描接口

    Docket.select

    是否开启swagger(在测试和生产环境开启)

    package com.cjh.springbootswagger.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    import org.springframework.core.env.Environment;
    import org.springframework.core.env.Profiles;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    import java.util.ArrayList;
    import java.util.Properties;
    
    /**
     * @author
     * @site
     * @company
     * @create 2020-10-16 10:47
     */
    @Configuration
    @EnableSwagger2 //开启swagger
    public class SwaggerConfig {
    
    
        @Bean  //配置swagger的docket实列
        public Docket docket(Environment environment) {
            //设置要显示的swagger环境
            Profiles profile = Profiles.of("dev", "test");
            //获取项目的环境
            boolean b = environment.acceptsProfiles(profile);
    
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .enable(b)//enable是否启动swagger 。
                    .select()
                    //RequestHandlerSelectors配置要扫描接口的方式
                    /*basePackage 指定扫描的包*/
                    //。paths过滤什么路径
                    .apis(RequestHandlerSelectors.basePackage("com.cjh.springbootswagger.controller"))
                    .build();
        }
    
    
        private ApiInfo apiInfo() {
            //作者信息
            Contact contact = new Contact("作者", "url", "邮箱");
            return new ApiInfo(
                    "SpringBoot集成Swagger", //标题
                    "SpringBoot集成Swagger", //描述
                    "1.0",//版本
                    "http://localhost:8080/swagger-ui.html",
                    contact,
                    "Apache 2.0",
                    "http://www.apache.org/licenses/LICENSE-2.0",
                    new ArrayList());
        }
    }

    配置API分组

    .groupName("hello")

    配置多个分组

        @Bean
        public Docket docket1(){
            return new Docket(DocumentationType.SWAGGER_2).groupName("A");
        }
        @Bean
        public Docket docket2(){
            return new Docket(DocumentationType.SWAGGER_2).groupName("B");
        }
        @Bean
        public Docket docket3(){
            return new Docket(DocumentationType.SWAGGER_2).groupName("C");
        }

    实体类

    package com.cjh.springbootswagger.Mode;
    
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    
    /**
     * @author
     * @site
     * @company
     * @create 2020-10-16 11:48
     */
    @ApiModel("用户")
    @Data
    public class User {
    
        @ApiModelProperty("姓名")
        private String name;
        @ApiModelProperty(value = "年龄")
        private int age;
        @ApiModelProperty(value = "性别")
        private String sex;
    }

    conroller

    package com.cjh.springbootswagger.controller;
    
    import com.cjh.springbootswagger.Mode.User;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import io.swagger.annotations.ApiParam;
    import org.springframework.web.bind.annotation.*;
    
    /**
     * @author
     * @site
     * @company
     * @create 2020-10-16 10:44
     */
    @Api(tags = "hello请求层")
    @RestController
    public class HelloController {
    
        @PostMapping("/hello")
        public String hello(){
            return "hello";
        }
    
        @GetMapping("/user")
        public User user(){
            return new User();
        }
    
        @ApiOperation("user接口")
        @GetMapping("/hellouser")
        public User helloUser(@ApiParam("用户") User user){
            return user;
        }
    
    
        @ApiOperation("姓名")
        @PostMapping("/hello02/{name}")
        public String  hello02(@ApiParam("用户") @PathVariable("name") String  name){
            return name;
        }
    
    }

    浏览器访问:http://localhost:8080/swagger-ui.html

    总结:

    我们可以通过swagger给一些比价难以理解的接口和属性添加注释。

    接口文档实时更新

    可以在线测试

    注意:在正式环境中关闭swagger!!出于安全考虑 ,节省运行内存。

  • 相关阅读:
    环境搭建-----IntelliJ idea之resin配置
    Maven的pom.xml文件详解------Build Settings
    JVM调优总结
    JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配
    JVM之字节码——Class文件格式
    java中的深复制和浅复制
    java创建对象的四种方式
    iOS获取所有机型
    博客已停止更新,请移步简书
    NSCache的简单使用
  • 原文地址:https://www.cnblogs.com/chenjiahao9527/p/13933786.html
Copyright © 2011-2022 走看看