自定义springboot-starter的应用场景

前言

在上一篇文章浅析springboot自动配置原理中,我们已经清楚知道关于springboot自动配置的实现原理,但是上一篇并没有花笔墨去讲解如何实现自定义的starter,原因有两个,第一个是本来代码已经贴太多了,强迫症的我不愿意再加那么多实现细节的代码,第二个是因为我觉得比较简单,各位看官自行google吧。这一篇,咱们来好好讨论自定义springboot-starter的应用场景。

应用场景

场景一:简化多服务公用框架集成。众所周知,springboot或者其他第三方所提供的starter,都是做框架集成,通过简化配置,提高开发效率,所以我们自定义starter的第一个应用场景也是基于这个思路。那我们日常开发工作中,有哪些框架是多个服务共用的,并且springboot或者其他第三方暂未提供,或者嫌弃第三方写的太烂,想自己重新实现的,都可以通过编写自定义starter来简化工作。我们公司采用微服务架构,每个服务都会使用swagger来生成在线接口文档。未封装swagger-starter之前,那么在每个服务里边,都需要增加swagger的配置类。而封装swagger-starter之后,可以省去这一步的操作,还可以通过增加自定义配置来实现一些自定义的功能。比如我们公司安全部门要求生产环境不能对外开放swagger接口文档地址,那么我们就可以添加一个enabled的参数来代表swagger是否启用,默认启用,在生产环境的配置中将enabled设为false即可达到这个目的。类似的额外功能还有很多,比如增加请求头等等,其他的读者自行发掘。
上面提到的是业务无关性的starter应用场景,那么我们抛出一个问题,是否有业务相关且多个业务场景或者多个服务会使用的应用场景?根据这个问题的描述,我们至少可以列出以下几个业务相关场景。
场景二:服务间调用的鉴权。我们公司服务之间互相调用需要进行鉴权(还是安全部门的要求),由于服务间是通过feign来实现相互调用,所以无法通过网关来进行统一鉴权。实现方案是通过新增feign拦截器,在源头服务发起调用之前增加鉴权参数,请求到达目标服务后通过鉴权参数进行鉴权。这两步操作很明显是每个服务都需要的,那么这种情况下,我们就可以把这两步操作封装成starter,达到简化开发的目的。同时,我们还可以通过增加配置,实现更细粒度的调用权限控制,比如订单服务只能调用库存服务的查询商品库存接口,而无法调用更新商品库存的接口。
场景三:邮件,短信,验证码功能。这些功能,在某些公司可能会放在common包里,但是这样其实会导致common包的臃肿,因为并不是所有服务都会使用到。有些公司(还是我们公司)可能对邮件服务器的访问有严格权限控制的,而且权限开通流程比较繁复的,那么会考虑做成服务,部署在已经具有访问权限的主机上,减去重复申请权限工作。如果除去这些限制,那么将这些功能封装成starter还是挺不错的,可以避免common包的臃肿。
场景四:大爱无疆场景。看到这个场景,大家是不是很懵逼,哈哈哈。是这样的,我们小组有位同事特别贴心,不仅编写接口,还提供调用接口的feignclient-starter给需要调用该接口的同事,starter还包含了相关请求类以及响应类。这已经不是可以通过有没有必要来理性分析的场景了,虽然我觉得不是很必要,但是我是很支持他这样做的,特别是给我提供接口的时候,哈哈哈。

总结

其实需不需要封装starter,最终还是根据技术架构而定,这里只是对我遇到的一些场景做一些描述,读者如果有别的场景,非常欢迎留言。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,364评论 6 343
  • 个人专题目录[https://www.jianshu.com/u/2a55010e3a04] 一、Spring B...
    Java及SpringBoot阅读 2,811评论 1 25
  • 本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker ...
    AI乔治阅读 7,177评论 0 71
  • 花殇花殇为谁伤,年年荒草掩霓裳。多少红粉佳人梦,一朝容颜葬无常。
    楚襄阅读 255评论 0 0