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);
}
}
网友评论