内容参考:https://www.cnblogs.com/byuan/p/14988295.html

一,项目完整目录如下

二、在pom文件中引入相关依赖

  <!-- 引入swagger相关的jar --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency>

三、创建Swagger的配置类,并进行配置

package com.swagger.config;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;/*** Swagger的配置类*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()//为当前包路径,控制器类包.apis(RequestHandlerSelectors.basePackage("com.swagger.controller")).paths(PathSelectors.any()).build();}//构建 api文档的详细信息函数,注意这里的注解引用的是哪个private ApiInfo apiInfo() {return new ApiInfoBuilder()//页面标题.title("Spring Boot 集成 Swagger2 测试接口文档")//创建人.contact(new Contact("王晓明", "http://www.beidu.com", "2465293546@qq.com"))//版本号.version("1.0")//描述.description("API 描述").build();}
}

四、发布项目,打开浏览器访问swagger的ui进行测试

http://localhost:8080/swagger-ui.html

注:如果项目启动报错

这里使用的Swagger版本是2.9.2、springboot 版本是2.6.3
发现是springboot版本太高,缺少swagger运行所需要的环境,回退到之前的版本
把springboot回退到2.5.6即可正常启动

五、创建实体类

package com.swagger.entity;import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;import java.io.Serializable;/*** 实体类*/
@NoArgsConstructor// 生成无参的构造方法
@AllArgsConstructor// 生成满参的构造方法
@Accessors(chain = true)// 使用链式调用
@Data// 自动生成get/set方法、重写toString方法等方法
public class Student implements Serializable {@ApiModelProperty(value = "学生id")// 对属性进行简要说明private Integer studentId;@ApiModelProperty(value = "学生姓名")private String studentName;@ApiModelProperty(value = "学生分数")private Double studentScore;}

六、创建vo,对返回结果进行封装

package com.swagger.vo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;/*** 定义一个返回结果类*/
@NoArgsConstructor
@AllArgsConstructor
@Data
@Accessors(chain = true)
public class ResponseVo<E> {private String message; //操作的提示信息private Integer status; //响应状态码private E data; //获取数据
}

七、创建service层

package com.swagger.service;import com.swagger.entity.Student;
import com.swagger.vo.ResponseVo;
import org.springframework.stereotype.Service;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;/*** Service*/
@Service
public class StudentService {// 这里我们不使用数据库, 使用Map集合来模拟数据库中的表private static Map<Integer, Student> studentMap=new HashMap<>();private static Integer studentId=10001;static {studentMap.put(studentId, new Student(studentId, "王晓明", 98.5));studentId++;studentMap.put(studentId, new Student(studentId, "王晓晓", 95.5));studentId++;studentMap.put(studentId, new Student(studentId, "王晓华", 96.5));studentId++;}/*** 插入一名学生返回影响行数* @param student* @return*/public ResponseVo<Integer> addOneStudent(Student student){student.setStudentId(studentId);studentMap.put(studentId, student);studentId++;return new ResponseVo<>("插入一条数据成功", 200, 1);}/*** 删除一位学生返回影响行数* @param studentId* @return*/public  ResponseVo<Integer> deleteOneStudentByStudentId(Integer studentId){if(studentMap.containsKey(studentId) == false){return new ResponseVo<>("您输入的id不存在", 200, 0);}studentMap.remove(studentId);return new ResponseVo<>("删除成功", 200, 1);}/*** 修改一位学生返回影响行数* @param student* @return*/public ResponseVo<Integer> updateOneStudent(Student student){if(studentMap.containsKey(student.getStudentId()) == false){return new ResponseVo<>("根据学生id,您所修改的学生不存在", 200, 0);}studentMap.put(student.getStudentId(), student);return new ResponseVo<>("学生修改成功", 200, 1);}/*** 输入studentId查询并返回对应的学生* @param studentId* @return*/public ResponseVo<Student> getOneStudentByStudentId(Integer studentId){if(studentMap.containsKey(studentId) == false){return new ResponseVo<>("您所查询的学生不存在", 200, null);}return new ResponseVo<>("查询成功", 200, studentMap.get(studentId));}/*** 获取所有学生* @return*/public ResponseVo<Collection<Student>> getAllStudent(){return new ResponseVo<>("获取全部学生成功", 200, studentMap.values());}
}

八、创建controller层

package com.swagger.controller;import com.swagger.entity.Student;
import com.swagger.service.StudentService;
import com.swagger.vo.ResponseVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.Collection;/*** Controller*/
@Api("学生管理相关接口")
@RestController //@Controller + @ResponseBody
@RequestMapping("/student")
public class StudentController {@Autowiredprivate StudentService studentService;/*** 添加一名学生* @param student* @return*/@ApiOperation("添加一名学生")// 为每个handler添加方法功能描述@PostMapping("/add_student.action")@ApiImplicitParam(name = "student", value = "所添加的学生", dataTypeClass = Student.class)public ResponseVo<Integer> addOneStudent(Student student) {return studentService.addOneStudent(student);}/*** 根据studentId删除一名学生* @param studentId* @return*/@ApiOperation("根据studentId删除一名学生")@DeleteMapping("/delete_student/{studentId}.action")public ResponseVo<Integer> deleteOneStudentByStudentId(@PathVariable Integer studentId) {return studentService.deleteOneStudentByStudentId(studentId);}/*** 修改一名学生* @param student* @return*/@ApiOperation("修改一名学生")@PutMapping("/update_student.action")@ApiImplicitParams({@ApiImplicitParam(name = "studentId", value = "学号", required = true), //required为是否必填项@ApiImplicitParam(name = "studentName", value = "学生姓名", required = false),@ApiImplicitParam(name = "studentSex", value = "学生性别", required = false),@ApiImplicitParam(name = "studentScore", value = "学生分数", required = false)})public ResponseVo<Integer> updateOneStudent(Student student) {return studentService.updateOneStudent(student);}/*** 根据id获取一名学生* @param studentId* @return*/@ApiOperation("根据id获取一名学生")@GetMapping("/get_ont_student/{studentId}.action")public ResponseVo<Student> getOntStudentByStudentId(@PathVariable Integer studentId) {return studentService.getOneStudentByStudentId(studentId);}/*** 获取全部学生* @return*/@ApiOperation("获取全部学生")@GetMapping("/get_all_student.action")public ResponseVo<Collection<Student>> getAllStudent() {return studentService.getAllStudent();}
}

九、重新启动项目,使用浏览器访问swagger的url进行测试

源码地址:https://gitee.com/wang-jian-fei/springboot-swagger-mongoDB.git

SpringBoot整合Swagger相关推荐

  1. 六、springboot整合swagger

    六.springboot整合swagger 简介 swagger 提供最强大,最易用的工具,以充分利用OpenAPI规范. 官网 : https://swagger.io/ 准备工作 pom.xml ...

  2. Springboot整合swagger指南

    Springboot整合swagger指南 1. 安装使用 1.1 下载依赖 <dependency><groupId>io.springfox</groupId> ...

  3. 解决高版本SpringBoot整合swagger时启动报错:Failed to start bean ‘documentationPluginsBootstrapper‘ 问题

    一.控制台的报错信息 2021-12-29 15:15:04 [main] ERROR org.springframework.boot.SpringApplication - Application ...

  4. springboot整合swagger(高版本)异常

    springboot整合swagger(高版本)异常 参考文章: (1)springboot整合swagger(高版本)异常 (2)https://www.cnblogs.com/chbyiming- ...

  5. 高版本springboot整合swagger

    高版本springboot整合swagger 这是我的springboot版本2.6: ![!\[Alt\](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF ...

  6. springboot整合swagger+knife4j

    springboot整合swagger+knife4j 参考网址: https://mp.weixin.qq.com/s/KlYj5JuJSJYQQ47mQu7b1w swagger配置参考文档 sw ...

  7. springboot整合swagger+mybatisplus案例

    1.前后端分离的一个常用的文档接口swaggerui越来越受欢迎,方便了前端以及后端人员的测试 2.如下为springboot整合swagger和mybatispus案例的github地址:https ...

  8. Springboot整合Swagger实战(一)

    Springboot整合Swagger实战(一) 记录一下自己在开发过程中,遇到的问题及安装环境的步骤(最讨厌安装环境了),希望可以帮到大家. 我在遇到问题的时候也是查找了好多文章,奈何呀,全是问题, ...

  9. Swagger - SpringBoot整合Swagger最佳实践

    总结 Swagger UI部分有两种,一种是官方提供的名为swagger-ui,访问路径为/swagger-ui.html,一种是萧明同学提供的swagger-bootstrap-ui,访问路径为/d ...

  10. Springboot整合Swagger UI 3.0.0 版本

    一.前言 在之前的项目中,以及提到了如何整合 Swagger UI 2 版本,包括导入jar包,编写配置文件,以及需要对应的springboot版本等. 链接如下:https://blog.csdn. ...

最新文章

  1. 漫说模板方法模式---学生时代的烦恼
  2. Python中小整数对象池和大整数对象池
  3. java jar包详解_Jar打包用法详解
  4. Sitecore安全性第1部分:自定义角色和权限
  5. MySQL5.5多实例编译安装——mysqld_multi
  6. 【遥感物候】Hants NDVI时间序列谐波分析法数据重构,植被生长季曲线效果可佳(附Hants软件下载)
  7. 你的专业 VS 你妈口中你的专业
  8. javascript数据结构与算法--二叉树遍历(中序)
  9. 编程成长日记——折半查找
  10. 数据湖产业生态联盟简介
  11. ora257 linux,ORA-00257解决
  12. 怎么用计算机算一元三次方程,一元三次方程计算器求解(附使用方法)
  13. sscanf小技巧-洛谷P7911 网络连接
  14. 欧几里得距离、曼哈顿距离和切比雪夫距离
  15. 超实用的linux服务器vps测速脚本看看你的服务器到底跑多少带宽
  16. INFOR WMS UI重构
  17. nacos问题: Load balancer does not have available server for client:xxx解决办法
  18. Cadence IC 617 虚拟机添加工艺库教程
  19. 教你使用华为ENSP模拟器配置静态NAT(一)
  20. mic的灵敏度和声音的大小

热门文章

  1. Web GIS 地图投影与坐标系的研究与总结
  2. 超好用的编程字体推荐!!!以及vsCode的配置使用
  3. 为什么阿谀奉承之辈能在公司横行这么久?
  4. kido机器人用流量吗_当4G遇到儿童手表 乐视Kido Watch评测
  5. 马化腾内部分享:产品经理的必修课
  6. MYSQL SELECT INTO临时表
  7. 我喜欢计算机职业200字,爱玩电脑的我作文200字
  8. React中三元运算符的坑
  9. 最全的世界汽车标志欣赏和LOGO释义
  10. 什么是情绪分析?基本指南