轻蜗牛直租平台-基础工具组件starter-公共基础组件包

一、背景

我在建设一个租房平台,进行基于租房业务的架构实践。在实战的过程中发现有很多操作可以通过工具类来集成,进而简化开发难度,在建设前期遇到类似的场景就想着可以复用,因此也积累了一些工具组件,这里简要阐述一下各个组件的使用场景,以及在开发过程中遇到的问题。后续会以基础工具类starter为主题详细阐述下列各个组件的实现原理,敬请期待。

二、设计与实现

2.1 工具组件列表

组件名称

中间件&框架依赖

使用场景

当前发版状态

starter-datadict-nacos

nacos

基于nacos管理配置服务,这里借助starter机制与nacos一起配合管理k-v类型的数据,简化应用接入k-v数据的复杂度,降低代码复杂度

完结

starter-datajson-nacos

nacos,mysql

基于nacos管理配置服务,这里借助starter机制与nacos,mysql一起配合管理非核心业务的配置类数据记录,基于json存储,简化业务配置类数据的管理

完结

starter-paperwork-nacos

nacos

基于nacos管理配置服务,这里借助starter机制与nacos一起管理文案类型的配置,将文案提示类配置放在nacos管理,提高配置能力

完结

starter-idempotent-redission

redis

基于redis实现的幂等,防重复提交,分布式锁等特性

完结

starter-logparam-aop

aop

基于spring aop&自定义注解实现入参校验,日志打印等功能,提供业务接口层,应用内部服务的日志打印能力

完结

starter-tianqing-qlexpress

nacos,qlexpress

基于nacos管理配置服务,这里借助starter机制与nacos一起将qlexpress表达式通过nacos管理起来,比如营销规则等

未完结

starter-excelport-easyexcel

mysql,easyexcel

基于mysql和easyexcel提供并行数据导入导出的能力,提高数据量在百万级的时候导入导出的性能

完结

toelephant-sdk

 

基于spring测试框架提供接口单元测试之上的集成测试能力

未完结

2.2 fat-jar策略

我一开始构建这些工具类的时候是基于一个大的starter包进行整合开发,类似于把所有工具类按不同的包进行划分,配置也单独使用不同的配置,使用方可以随意选择,当时的包划分如下图:

WX20210105-163303-000001.png

目前这个工程实施到一半就放弃了,因为全都整合到一个大的包下面会导致这个工具包太重,升级也存在问题,另外业务方使用的时候可能只会使用其中一个工具包,并不想全部带上,所以不够轻量化,因此这个工程停滞了,需要另外一种架构方式。

2.3 starter策略

上面的工程算是一种错误的造轮子的方式,因此在实施不下去的时候也迫使我思考其他方式去构建这些工具组件。究其原因其实是有些工具服务是依赖特定组件而产生的,有些工具服务是有状态的,而有些则是没有状态的,这些服务工具类全部搀和在一起,类似一个大杂烩无法发挥出各自的全部优势。因此我借助了spring-starter的方式去构建每个工具组件,使其独立但是又可以组合使用,升级也比较方便。

当前的分包如下:

WX20210105-164538----2222.png

 

2.4 启动优化

目前这些工具类的主要启动流程如下:spring容器启动,顺便读取配置,然后启动工具类服务,链接中间件,读取对应配置数据。针对启动优化我也做了一些思考和实践,这里总结一些我使用过的一些方式,并进行了最终的优化。

2.4.1 springstarter的标准实现

这种方式算是spring-starter工具的一种官方实现了,通过自定义注解和配置类,然后注册服务bean即可,starter启动走springboot的启动方式,在Application主类上增加自定义注解即可。

2.4.2 借助CommandLineRunner接口实现

初期有些工具组件实际上是通过这种方式实现启动服务,加载配置的,因此需要在Application主类上实现该接口,并手动初始化工具组件,但是这种方式与主类耦合类,主类不够简洁,同时主类上有springboot等注解,这样会导致主类变得更加复杂。

2.4.3 借助ApplicationListener<ApplicationStartedEvent>

当大部分组件基本定型之后我学到了一种新的方式,这种方式借助于spring的事件机制监听服务启动完成事件,进而进行组件工具类的初始化。因此我将大部分工具组件重构为这种方式了。

我最近整了一个公众号,持续输出原创内容,敬请关注:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值