研究开源手写注册中心中间件自定义starter源代码设计思路

本文选取一个手写注册中心中间件自定义starter的源代码,对这个starter源码设计进行分析。

首先了解一下什么是SpringBoot的starter组件?这个可以理解为SpringBoot在集成一些指定框架时,除了预先读取的自动配置类之外,还需要通过其它代码来关联这些配置最终使得集成进来的框架可以工作,这些代码可以理解为一个个插件。

1.starter是一种服务(或者叫插件)——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现需要的Bean,...

2.项目命名方式为[name]-spring-boot-starter (官方命名方式 spring-boot-...)

例如下面集成eureka注册中心和mybatis时需要引入对应的starter,通过XXXX-starter-XXXX插件依赖就能使得需要集成的框架生效并运行起来:

研究开源手写注册中心中间件自定义starter源代码设计思路

starter的理念:starter会把所有用到的依赖都给包含进来,避免了开发者自己去引入依赖所带来的麻烦。需要注意的是不同的starter是为了解决不同的依赖,所以它们内部的实现可能会有很大的差异,例如jpa的starter和Redis的starter可能实现就不一样,但是对外就是一个类似jar的依赖减少了重复性开发。

下面我们将通过一个手写注册中心中间件自定义starter的源代码,去理解怎么完成一个自定义starter组件的开发过程。在学习之前需先了解SpringBoot基础应用知识,SpringBoot自动配置原理知识以及SpringBoot监听器知识等,有助于理解代码设计思路。

本开源代码github地址为:https://github.com/513667225/luban-vip-project/tree/master/eureka3000

代码结构如下: