「这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战」。
哈喽大家好,我是阿Q!
上文中我们已经讲解了搭建 swagger 注册中心的相关内容,本文我们将要讲解如何搭建 swagger-starter, 来完成客户端的搭建。
项目源代码:
https://gitee.com/kdyzm/swagger-spring-boot-starter
设计上,要求做到微服务客户端只需要引入组件jar包,然后配置文件配置一些swagger的基本信息,服务启动之后就能自动上传swagger文档到swagger注册中心,具体技术细节,应当包含如下功能
- 能够实现
swagger文档的完整上传,其效果和直接请求本地的/v2/api-docs一样 - 支持服务发现
swagger注册中心以及swagger注册中心url配置两种方式 - 客户端能够以
springboot starter方式自动配置实现无代码侵入式生效 swagger-spring-boot-starter客户端组件同时兼容eureka和nacos
swagger文档的扫描和上传
上面分析过/v2/api-docs的实现原理,利用它的实现原理,可以轻松获取到Swagger对象
swagger-spring-boot-starter中SwaggerMvcGenerator的getSwagger()方法
上传的话,根据配置文件中是否配置serverUrl决定采用服务发现方式还是直接请求方式上传Swagger信息
swagger-spring-boot-starter中SwaggerRegistryService的registry()方法
springboot starter支持
这个非常简单,在resources/META-INF目录下新建文件并配置好即可。
兼容注册中心
swagger-spring-boot-starter不依赖nacos client或者eurka client,而是依赖了它们的公共接口模块spring-cloud-commons。
实际上nacos client或者eureka client均是该模块的具体实现,所以swagger-spring-boot-starter可以兼容两种客户端服务发现组件的实现,但是服务端因为具体依赖了某种服务发现组件,在我这里默认使用nacos,如果要用eureka需要自行改造。
下文中我们要将注册中心和starter应用于实战中,敬请期待!
题外篇
阿Q将持续更新
java实战方面的文章,感兴趣的可以关注下公众号:阿Q说代码,也可以来技术群讨论问题呦,点赞之交值得深交!