【实战教程】构建可复用的 Spring Boot starter 微服务组件

案例 Demohttps://gitee.com/regexpei/coding-trainee/tree/demo/20240526_starter

介绍

在 Spring Boot 中,starter 启动依赖就像一个"开箱即用"的工具箱,它包含了第三方组件的配置和依赖,让我们无需手动配置和添加这些组件。

通过 starter,我们可以轻松地将通用的代码和配置整合成一个可复用的模块,从而简化项目搭建和代码管理,让开发人员更加专注于业务功能的开发。

那么,我们如何自定义一个 starter 呢?

步骤

  1. 创建 Maven 项目,命名规范为 xxx-spring-boot-starter

  2. 引入依赖

    xml 复制代码
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
    </dependencies>
  3. 定义 XxxProperties 属性配置类,用于绑定 application.yaml 或 application.properties 文件中的配置属性

  4. 编写业务类,根据 starter 的功能需要编写业务逻辑

  5. 配置 XxxAutoConfiguration 自动配置类

    • 使用 @Configuration 标记为配置类
    • 使用 @EnableConfigurationProperties(XxxProperties.class) 绑定配置属性类
  6. 创建 resources/META-INF/spring.factories

    factories 复制代码
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\  
    xxx.xxx.xxx.XxxAutoConfiguration
  7. 在需要使用的项目中引入 starter

    xml 复制代码
    <dependency>
        <groupId>xxx.xxx</groupId>
        <artifactId>xxx-spring-boot-starter</artifactId>
        <version>1.0.0</version>
    </dependency>
相关推荐
无心水29 分钟前
【分布式利器:腾讯TSF】10、TSF故障排查与架构评审实战:Java架构师从救火到防火的生产哲学
java·人工智能·分布式·架构·限流·分布式利器·腾讯tsf
一 乐8 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
Boilermaker19928 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维8 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_999 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子9 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34169 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
恋爱绝缘体19 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wszy180910 小时前
新文章标签:让用户一眼发现最新内容
java·python·harmonyos
wszy180910 小时前
顶部标题栏的设计与实现:让用户知道自己在哪
java·python·react native·harmonyos