浅谈swagger优缺劣势,以及替代品

本文介绍了springfox-swagger在Java Spring Boot项目中的使用,包括其启动慢、UI加载慢等问题,并探讨了swagger的优缺点。针对这些问题,文章推荐了smart-doc作为替代方案,强调了smart-doc的开源性、高性能和低侵入性,并分享了实践中的体验和优点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   平时不太关注的swagger, 最近拿到一个优化需求,
   需要把springboot 项目启动优化一下,于是开始了打怪埋坑的道路。
  先将讲一讲swagger 的原理实现以及优缺点。

springfox-swagger简介

签于swagger的强大功能,Java开源界大牛spring框架迅速跟上,它充分利用自已的优势,把swagger集成到自己的项目里,整了一个spring-swagger,后来便演变成springfox。springfox本身只是利用自身的aop的特点,通过plug的方式把swagger集成了进来,它本身对业务api的生成,还是依靠swagger来实现。

关于这个框架的文档,网上的资料比较少,大部分是入门级的简单使用。本人在集成这个框架到自己项目的过程中,遇到了不少坑,为了解决这些坑,我不得不扒开它的源码来看个究竟。此文,就是记述本人在使用springfox过程中对springfox的一些理解以及需要注意的地方。

springfox大致原理

springfox的大致原理就是,在项目启动的过种中,spring上下文在初始化的过程,框架自动跟据配置加载一些swagger相关的bean到当前的上下文中,并自动扫描系统中可能需要生成api文档那些类,并生成相应的信息缓存起来。如果项目MVC控制层用的是springMvc那么会自动扫描所有Controller类,跟据这些Controller类中的方法生成相应的api文档。

在经过几年程序员打怪升级后,接触的项目越来越多,发现,大型项目中swagger,存在严重的 启动慢,swagger-ui.html
打开慢,请求接口,响应慢 的问题,
(虽然有些人,对代码注入很关注,我倒不是这么在意,并不是处女座)

经过实验对比,普通启动需要80s 的spirng boot 项目,整合了swagger,启动时间,需要120秒,性能影响 50%,还好,正常情况下正式环境,不会暴露这个配置。

swagger 的好处

1.易于集成
2.生态较好
3.前期开发测试较为方便测试(不用打开postman 等调试工具)
4.待补充 swagger 的坏出,
1.项目一大,swagger-ui.访问特别慢,亲身经历某运营商的代码,swaggger访问,是特别慢
2.启动影响性能,这里主要存在需要加载swagger 基础组件,和扫描bean,生成api文档,会占用主线程,所以造成了启动很慢。(当然还有一些坑,比如入参容易,递归循环,必须在同一个上下文,等等)
3.代码侵入。

基于这些问题,处女座的程序员就开发一些试图替代swagger 的轮子,对于我仔细研究后,最值得推荐的,至少我愿意放在我架构里面的,当属
smat-doc 这个开源项目,经过实践,存在一下几个好处。

1.开源项目,扩展性强,我尝试过基于源码,master 分支,适配自己的框架,成功
2.git hub 活跃度高,更新迭代快,从更新日志来看,基本很快就一个班门 4年时间,现在已经是一个成熟的产品
3.用maven 插件方式,生成API 文档,对启动性能无影响
4.不会造成代码入侵
官网地址

smat-doc 的主要原理,当然是在编译阶段,根据源码,指定注解(@RestController @controller @mappping)等注解,生成api 文档,原理很简单,当然你也可以实现,只不过,他们已经做的比较好了。我们就努力在开源社区贡献即可。重复遭轮子浪费make bug 的时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值