zoukankan      html  css  js  c++  java
  • SpringBoot进行整合Swagger2从此接口文档说拜拜

    SpringBoot进行Swagger的整合非常方便我们进行接口对接和调试。接口文档也不用给前端提供了,简直酸爽。。。。。

    我们首先需要引入Swagger的Jar包

    一、依赖

     <!--整合swagger-->
            <!-- swagger -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${swagger.version}</version>
            </dependency>
            <!-- swagger-ui -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${swagger.version}</version>
            </dependency>

    二、Swagger配置类

    这个配置类你需要知道哪些东西能进行配置,我们可以抽出配置项,写到配置文件中,方便以后进行更改。 特别要注意的是里面配置了api文件也就是controller包的路径,不然生成的文档扫描不到接口。

    package com.herbert.demo.config;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    
    /**
     * Created by Herbert on 2020/4/15.
     */
    @Configuration
    public class SwaggerConfig {
    
        @Value("${swagger.enabled}")
        private boolean enabled;
    
        @Value("${swagger.title}")
        private String title;
    
        @Value("${swagger.base-package}")
        private String basePackAge;
    
        @Value("${swagger.description}")
        private String description;
    
    
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage(basePackAge))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
        private ApiInfo apiInfo() {
            if(enabled){
                return new ApiInfoBuilder()
                    //页面标题
                    .title(title)
                    //描述
                    .description(description)
                    .build();
            }
            return new ApiInfoBuilder().build();
        }
    }

    在SpringBoot中用@Configuration注解该类,等价于XML中配置beans;用@Bean标注方法等价于XML中配置bean。

    我们通过@Value将外部的值动态注入到Bean中,读取配置中的文件信息

    #swagger配置
    swagger:
      enabled: true
      title: 你知道吗?我是Title
      description: 描述:不想写描述.
      base-package: com.herbert.demo.controller

    三、开启Swagger配置

    Application.class 加上注解@EnableSwagger2 表示开启Swagger

    package com.herbert.demo;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    /**
     * Created by Herbert on 2020/4/15.
     */
    
    @SpringBootApplication
    @MapperScan("com.herbert.demo.mapper") //扫描的mapper
    @EnableSwagger2
    public class Application {
    
        public static void main(String[] args) throws Exception {
            SpringApplication.run(Application.class, args);
        }
    
    }

    四、Restful 接口加入注解

    package com.herbert.demo.controller;
    
    import com.herbert.demo.entity.Test;
    import com.herbert.demo.service.TestService;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiImplicitParams;
    import io.swagger.annotations.ApiOperation;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * Created by Herbert on 2020/4/15.
     */
    @Api(description = "测试接口")
    @RestController
    @RequestMapping("/test")
    @Slf4j
    public class TestController {
    
        @Autowired
        private TestService testService;
    
        @ApiOperation(value = "查询测试" ,  notes="查询用户信息")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "id", value = "用户ID", required = true, paramType = "query", dataType = "String")
        })
        @RequestMapping(value="getTest",method= RequestMethod.GET)
        public Test GetUser(String id){
            return testService.findTest(id);
        }
    
    
    }

    启动SpringBoot项目,访问 http://localhost:8089/swagger-ui.html

  • 相关阅读:
    如何在 Microsoft Visual C# .NET 中实现 Microsoft Excel 自动化
    CentOS 6.5静态IP的设置(NAT和桥接都适用)
    myeclipse里如何添加mysql数据库
    Attribute value is quoted with " which must be escaped when used within the value 问题解决
    CentOS 6.5安装之后的网络配置
    Apache server for win解压版的安装与配置
    Oracle SQL 基本操作之 用户权限管理方法
    CentOS 6.5的安装详解
    IO类01
    可见性的问题
  • 原文地址:https://www.cnblogs.com/zhaixingzhu/p/12731688.html
Copyright © 2011-2022 走看看