SpringBoot集成Swagger2
时间:2022-07-22
本文章向大家介绍SpringBoot集成Swagger2,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
首先说一下这个东西的作用:它可以很轻松整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。简单说就是Swagger2可以很方便帮我们生成RESTful API文档,提高协同开发效率。
常用注解:
定义在类上:@Api
定义在方法上:@ApiOperation
定义在参数上:@ApiParam
定义在实体类上:@ApiModel
定义在实体类属性上:@ApiModelProperty
例如:
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("edu_course_collect")
@ApiModel(value="CourseCollect对象", description="课程收藏")
public class CourseCollect extends BaseEntity {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "课程讲师ID")
private String courseId;
@ApiModelProperty(value = "课程专业ID")
private String memberId;
}
@Api(tags = "讲师管理")
@RestController
@RequestMapping("/admin/edu/teacher")
public class TeacherController {
@Autowired
private TeacherService teacherService;
@ApiOperation("所有讲师列表")
@GetMapping("list")
public List<Teacher> listAll() {
return teacherService.list();
}
@ApiOperation(value = "根据ID删除讲师",notes = "根据ID删除讲师,逻辑删除")
@DeleteMapping("remove/{id}")
public boolean removeById(@ApiParam(value = "讲师ID",required = true) @PathVariable String id){
return teacherService.removeById(id);
}
}
创建一个SpringBoot工程,添加相关的依赖
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
然后就是Swagger2配置了,这很简单很轻松,只需要你自己提供一个Docket的Bean。
这里我建了一个config包,将SwaggerConfig类写在里面。
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2);
}
}
然后运行SpringBoot项目,访问http://localhost:8080/swagger-ui.html就可以看到一个界面了。到这里集成就基本完毕。
下面进行CRUD的测试。
我们去建一个User类,用来测试使用。我这里放在entity层,
注意:前三个注解是Lombok的注解,后面关于Api开头的注解都是Swagger提供的,主要效果是在项目运行后生成的html中有一些附加信息,可以不加的。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@ApiModelProperty("用户id")
private Integer id;
@ApiModelProperty("用户姓名")
private String name;
@ApiModelProperty("用户年龄")
private Integer age;
}
接下来我们去写数据操作,新建dao层一个UserDao接口和他的实现类。为了方便,我就不引入数据库了,我使用map来做数据的CRUD。
public interface UserDao {
Collection<User> findAll();
User findById(Integer id);
void delete(Integer id);
void save(User user);
}
@Repository
public class UserDaoImpl implements UserDao {
private static Map<Integer,User> userMap;
static {
userMap = new HashMap<>();
userMap.put(1,new User(1,"乐心湖1",181));
userMap.put(2,new User(2,"乐心湖2",182));
userMap.put(3,new User(3,"乐心湖3",183));
}
@Override
public Collection<User> findAll() {
return (userMap.values());
}
@Override
public User findById(Integer id) {
return userMap.get(id);
}
@Override
public void delete(Integer id) {
userMap.remove(id);
}
@Override
public void save(User user) {
userMap.put(user.getId(),user);
}
}
controller层下建UserController类
@RestController
@Api(tags = "用户管理相关接口")
@RequestMapping("/user")
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping("/findAll")
@ApiOperation("查询所有用户")
public Collection<User> findALl(){
return userDao.findAll();
}
@GetMapping("/findById/{id}")
@ApiOperation("根据id查询用户")
public User findById(@PathVariable Integer id){
return userDao.findById(id);
}
@PutMapping("/save")
@ApiOperation("添加或者修改用户")
public void save(@RequestBody User user){
userDao.save(user);
}
@DeleteMapping("/delete/{id}")
@ApiOperation("根据id删除用户")
public void delete(@PathVariable Integer id){
userDao.delete(id);
}
}
重新运行项目,刷新页面。
- Mac下通过VMware Fusion安装centos虚拟机操作记录
- 进程管理利器-supervisor部署记录
- python大小写转换函数
- zabbix中配置当memory剩余不足20%时触发报警
- VB6再回首:数据访问
- python运用中文注释时报错解决方法
- 分页器常用样式
- 分布式监控系统Zabbix-3.0.3--短信报警设置
- linux下用户操作记录审计环境的部署记录
- open-falcon ---客户机agent操作
- 双拼域名yansuan.com被木雨林收购
- open-falcon ---安装Dashboard时候报错"SSLError: The read operation timed out"
- Flash/Flex学习笔记(37):不用系统组件(纯AS3)的视频播放器--只有8.82K
- Flash/Flex学习笔记(35):如何正确监听Stage对象的事件
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 【Java】06 面向对象基本特征
- PAT (Basic Level) Practice (中文)1054 求平均值 (20 分)
- zookeeper集群的搭建
- 【Java】07 常见 API
- 【Java】04 数组
- hadoop分布式格式化时出现异常java.net.unknownhostexception
- 【Java】05 面向对象
- 【Java】08 集合
- PAT (Advanced Level) Practice 1001 A B Format (20 分)
- 【Java】09 List 集合与 Collections 工具类
- PAT (Advanced Level) Practice 1003 Emergency (25 分)
- 数据结构严书习题6.65已知前中序,求二叉链表
- 【Java】10 Deque 接口
- 12.深入k8s:kubelet创建pod流程源码分析
- (较为详细)树的遍历方式一览(附完整源码可在VScode与cb运行)