当前栏目
SpringBoot集成Swagger2
importorg.springframework.context.annotation.Configuration;
importspringfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration //配置类
@EnableSwagger2 //启动Swagger2的自动配置1 引言
什么是Swagger:
Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。简单来说,Swagger是一个功能强大的接口管理工具,并且提供了多种编程语言的前后端分离解决方案。
Swagger的作用:
- 支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,节约了手写文档的时间。
- 提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。
2 问题
如今前后端通过API进行交互,前后端相对独立且松耦合。会产生前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发。
3 方法
1.新建SpringBoot-web项目
2.导入Swagger2依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>3.0.0</version> </dependency> |
---|
3.编写controller测试,进行测试运行。
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @RequestMapping("/test") public String test(){ return "Hello,World"; } } |
---|
运行结果:
4.编写一个配置类-SwaggerConfig来配置 Swagger2
5.添加相应注解
import org.springframework.context.annotation.Configuration; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration //配置类 @EnableSwagger2 //启动Swagger2的自动配置 |
---|
问题:
启动项目后发现,项目抛出以下错误:
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException |
---|
启动Bean失败,原因是我们配置了Swagger类后却没有继承DelegatingWebMvcConfiguration Java 配置类。
导致项目出错。
解决方法:
在启动类加上@EnableWebMvc和@EnableOpenApi注解即可解决。
@EnableWebMvc是使用Java 注解快捷配置Spring Webmvc的一个注解。
在使用该注解后配置一个继承于WebMvcConfigurerAdapter的配置类即可配置好Spring Webmvc。
运行:
访问http://localhost:8080/swagger-ui/index.html,即可以看到Swagger页面
4 结语
本文对SpringBoot集成Swagger2做了简单的介绍,以及配置文件中所出现的问题进行了简单的讲解。
实习编辑:李欣容
稿件来源:深度学习与文旅应用实验室(DLETA)
相关文章
- 前端面试 【JavaScript】— typeof 是否能正确判断类型?
- 前端面试 【JavaScript】— instanceof 能否判断基本数据类型?
- 前端面试 【JavaScript】— 能不能手动实现一下 instanceof 的功能?
- 前端面试 【JavaScript】— Object.is和=== 有什么区别?
- 前端面试 【JavaScript】— JS中类型转换有哪几种?
- 前端面试 【JavaScript】— == 和 ===有什么区别?
- 前端面试 【JavaScript】— 对象转原始类型是根据什么流程运行的?
- JavaScript 的 parseInt() 函数
- javascript实现两个数字进行组合
- JS监听键盘按键
- 大前端开发中的路由管理之五:Flutter篇
- Javascript的DOM操作
- 在Vue项目中使用WebSocket技术
- 新手向:前端程序员必学基本技能——调试JS代码
- React 毁了 Web 开发!
- 「JS 逆向百例」cnki 学术翻译 AES 加密分析
- 商标注册域名后缀用什么?商标和域名有哪些区别?
- 网站建设流程是怎样的?需要看重哪些细节?
- 网站域名商标注册流程是什么?网站域名商标有什么用?
- 如何建设一个实用性强的网站 网站上线后如何运营