主要添加依赖如下:
<!--添加Swagger依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--添加Swagger-UI依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.mohai.one</groupId>
<artifactId>springboot-swagger</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-swagger</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--添加Swagger依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--添加Swagger-UI依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties配置文件:
spring.swagger.enable=true
SwaggerConfig配置文件:
package com.mohai.one.springbootswagger.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @Auther: moerhai@qq.com
* @Date: 2020/7/17 23:20
*/
@Configuration
@EnableSwagger2 //声明启动Swagger2
//声明属性是否可用
@ConditionalOnProperty(name = "spring.swagger.enable", havingValue = "true", matchIfMissing=true)
public class SwaggerConfig {
/**
* 注入 Docket,添加扫描的包路径
*
* @return
*/
@Bean
public Docket customDocket() {
return new Docket(DocumentationType.SWAGGER_2)
//ApiInfo用于描述Api文件的基础信息
.apiInfo(new ApiInfoBuilder()
//标题
.title("Swagger2文档")
//描述
.description("Rest风格接口")
//版本号
.version("1.0.0")
.build())
.select()
//定义扫描的swagger接口包路径
.apis(RequestHandlerSelectors.basePackage("com.mohai.one.springbootswagger.controller"))
//所有路径都满足这个条件
.paths(PathSelectors.any())
.build();
}
}
UserDTO
package com.mohai.one.springbootswagger.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
* @Auther: moerhai@qq.com
* @Date: 2020/7/18 00:18
*/
@ApiModel(description="用户对象user")
public class UserDTO {
@ApiModelProperty(value="用户id")
private int id;
@ApiModelProperty(value="用户名",name="username")
private String username;
@ApiModelProperty(value="登录时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date loginTime;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getLoginTime() {
return loginTime;
}
public void setLoginTime(Date loginTime) {
this.loginTime = loginTime;
}
}
IndexController
package com.mohai.one.springbootswagger.controller;
import com.mohai.one.springbootswagger.domain.UserDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* @Auther: moerhai@qq.com
* @Date: 2020/7/17 23:20
*/
@RestController
@Api("页面首页")
public class IndexController {
@ApiOperation("欢迎页面")
@GetMapping("/index")
@ApiImplicitParam(name = "name",value = "姓名",dataType = "String")
public String index(String name){
return "Welcome " + name + " to my site";
}
@ApiOperation("更新用户信息")
@PostMapping("/updateUserInfo")
public UserDTO updateUserInfo(@RequestBody @ApiParam(name="用户对象",value="传入json格式",required=true) UserDTO user){
UserDTO userDTO = new UserDTO();
userDTO.setId(user.getId());
userDTO.setUsername("test");
userDTO.setLoginTime(new Date());
return userDTO;
}
}
http://localhost:8080/swagger-ui.html#/