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

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM