springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo

一、搭建环境

1.目录:

springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第1张图片

2.pom.xml


<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.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.3.4.RELEASEversion>
        <relativePath/> 
    parent>
    <groupId>com.examplegroupId>
    <artifactId>demoartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <packaging>jarpackaging>
    <name>demoname>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-swagger2artifactId>
            <version>2.9.2version>
            <exclusions>
                <exclusion>
                    <groupId>io.swaggergroupId>
                    <artifactId>swagger-annotationsartifactId>
                exclusion>
                <exclusion>
                    <groupId>io.swaggergroupId>
                    <artifactId>swagger-modelsartifactId>
                exclusion>
            exclusions>
        dependency>
        
        <dependency>
            <groupId>io.swaggergroupId>
            <artifactId>swagger-annotationsartifactId>
            <version>1.5.21version>
        dependency>
        <dependency>
            <groupId>io.swaggergroupId>
            <artifactId>swagger-modelsartifactId>
            <version>1.5.21version>
        dependency>
        
        <dependency>
            <groupId>com.github.xiaoymingroupId>
            <artifactId>swagger-bootstrap-uiartifactId>
            <version>1.9.6version>
        dependency>
    dependencies>
project>

3.启动类 DemoApplication.java

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

/**
 * @author leomoon
 * 启动类
 */
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

4.Swagger2总体配置集成类

package com.example.demo.swagger2;

import io.swagger.annotations.ApiOperation;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Swagger2配置
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    /**
     * 创建API
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
                .apiInfo(apiInfo())
                // 设置哪些接口暴露给Swagger展示
                .select()
                // 扫描所有有注解的api,用这种方式更灵活
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                // 扫描指定包中的swagger注解
                //.apis(RequestHandlerSelectors.basePackage("com.hwasee.project.tool.swagger"))
                // 扫描所有 .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

    /**
     * 添加摘要信息
     */
    private ApiInfo apiInfo() {
        // 用ApiInfoBuilder进行定制
        return new ApiInfoBuilder()
                // 设置标题
                .title("标题:****管理系统_接口文档")
                // 描述
                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
                // 作者信息
                .contact(new Contact("lmp", null, null))
                // 版本
                .version("版本号:" + "1.0")
                .build();
    }

}

5.三个简单实体类:User.java、Org.java、RespBean.java

package com.example.demo.swagger2;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * @author lmp
 * @date 2020-10-31 1:01
 */
@ApiModel
public class Org {

    @ApiModelProperty(value = "@ApiModelProperty(value = \"组织id\")")
    private Integer id;
    @ApiModelProperty(value = "单位名")
    private String orgName;
    @ApiModelProperty(value = "单位地址")
    private String address;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getOrgName() {
        return orgName;
    }

    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }


    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

}
package com.example.demo.swagger2;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * @author lmp
 * @date 2020-10-31 1:01
 */
@ApiModel
public class User {
    @ApiModelProperty(value = "@ApiModelProperty(value = \"用户id\")")
    private Integer id;
    @ApiModelProperty(value = "用户名")
    private String username;
    @ApiModelProperty(value = "用户地址")
    private String address;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
package com.example.demo.swagger2;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * @author lmp
 * @date 2020-10-31 1:03
 */
@ApiModel
public class RespBean {
    @ApiModelProperty(value = "@ApiModelProperty(value = \"200\")")
    private String code = "200";
    private String msg = "访问成功! ";

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

}

6.控制器OrgController.java、UserController.java

package com.example.demo.swagger2;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.web.bind.annotation.*;

/**
 * @author leomoon
 * @Controller
 */
@RestController
@Api(tags = "@Api(tags = \"单位管理相关接口\")")
@RequestMapping("/org")
public class OrgController {

    @PostMapping("/")
    @ApiOperation("@ApiOperation(\"添加单位的接口\")")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "orgname", value = "单位名", defaultValue = "李四"),
            @ApiImplicitParam(name = " @ApiImplicitParams", value = "@ApiImplicitParam"),
            @ApiImplicitParam(name = "address", value = "单位地址", defaultValue = "深圳", required = true)
    }
    )
    public RespBean addorg(String orgname, @RequestParam(required = true) String address) {
        return new RespBean();
    }

    @GetMapping("/")
    @ApiOperation("@ApiOperation(\"根据id查询单位的接口\")")
    @ApiImplicitParam(name = "id", value = "单位id", defaultValue = "99", required = true)
    public Org getorgById(@PathVariable Integer id) {
        Org org = new Org();
        org.setId(id);
        return org;
    }
    @PutMapping("/{id}")
    @ApiOperation(" @ApiOperation(\"根据id更新单位的接口\")")
    public Org updateorgById(@RequestBody Org org) {
        return org;
    }
}

package com.example.demo.swagger2;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.web.bind.annotation.*;

/**
 * @author leomoon
 * @Controller
 */
@RestController
@Api(tags = "@Api(tags = \"用户管理相关接口\")")
@RequestMapping("/user")
public class UserController {

    @PostMapping("/")
    @ApiOperation("@ApiOperation(\"添加用户的接口\")")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "username", value = "用户名", defaultValue = "李四"),
            @ApiImplicitParam(name = " @ApiImplicitParams", value = "@ApiImplicitParam"),
            @ApiImplicitParam(name = "address", value = "用户地址", defaultValue = "深圳", required = true)
    }
    )
    public RespBean addUser(String username, @RequestParam(required = true) String address) {
        return new RespBean();
    }

    @GetMapping("/")
    @ApiOperation("@ApiOperation(\"根据id查询用户的接口\")")
    @ApiImplicitParam(name = "id", value = "用户id", defaultValue = "99", required = true)
    public User getUserById(@PathVariable Integer id) {
        User user = new User();
        user.setId(id);
        return user;
    }
    @PutMapping("/{id}")
    @ApiOperation(" @ApiOperation(\"根据id更新用户的接口\")")
    public User updateUserById(@RequestBody User user) {
        return user;
    }
}

二、启动:http://localhost:8080/doc.html

springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第2张图片
根据引入的不同版本UI包,页面访问的路径也不一样,得注意一下
springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第3张图片

三、@ApiModel实体配置

springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第4张图片
springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第5张图片

四、@Api配置Controller

springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第6张图片
GET:springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第7张图片
POST:springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第8张图片

五、调试接口:

springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第9张图片

六、导出离线文档:

springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第10张图片
springboot整合swagger2-2.9.2和swagger2-UI-1.9.6图形化超简单demo_第11张图片
复制到Typora保存即可。可打印转PDF,但是有的模糊,自己百度解决。

你可能感兴趣的:(Java,swagger2,swagger2,spring,boot)