Spring Boot源码(六)自定义starter

一、为啥要自定义starter?

  痛点:日常开发中一些独立于业务之外的通用模块,如果多个工程需要复用的时候,需要将代码硬拷贝到另一个工程并重新集成一遍,麻烦至极。

  解决方案:把这些功能模块封装成自定义的starter,复用的时候只需要将其在pom中引用依赖即可,再由SpringBoot为我们完成自动装配。

  应用场景:动态数据源、登录模块、基于AOP技术实现日志切面...

二、自定义starter的命名规则

  SpringBoot官方提供的starter:spring-boot-starter-XXX的方式命名的。

  自定义的starter:XXX-spring-boot-starter命名规则。【为了区分SpringBoot生态提供的starter】

三、实现逻辑

  • 1、新建maven-jar工程
  • 2、新增XXXMarker标记类【用于条件注解中的判断,实现热插拔】
  • 3、新增@EnableXXX注解【@EnableXXX开头的注解,用于设置在启动类上,实现操作热插拔】
  • 4、新增需要设置在自定义starter中的公共代码【模拟需要多模块公共依赖的代码】
  • 5、编写XXXAutoConfiguration自动配置类
  • 6、resources下创建/META-INF/spring.factories【用于注册自动配置类】

四、代码实现

1、新建maven jar工程,工程名为zhtest-spring-boot-starter,并导入依赖。

2、新增标记类ConfigMarker【用于条件注解中的判断,实现热插拔】

3、新增EnableRegisterConfigMarker注解【实际操作热插拔】

4、新增一个javaBean【模拟需要多模块公共依赖的代码】

5、编写自动配置类

6、resources下创建/META-INF/spring.factories【用于注册自动配置类】

五、使用自动配置类

  PS:热插拔的原理实际上就是启动类上的一些@EnableXXX开头的注解

  步骤如下:

  • 1、导入自定义starter的依赖
  • 2、启动类开启热插拔注解
  • 3、在全局配置文件中配置属性值
  • 4、编写测试方法

1、导入自定义starter的依赖

2、启动类开启热插拔注解

3、在全局配置文件中配置属性值

4、编写测试方法

 

posted @   有梦想的肥宅  阅读(244)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示