SpringBoot自定义启动器(自定义Starter)

一、如何理解 SpringBoot 的 starter 机制

Spring Boot 的 Starter 机制是其简化开发流程的关键特性之一。通过提供 预配置的依赖项自动配置 支持,这一机制极大地简化了项目的依赖管理配置工作,使得开发者可以更快地搭建应用程序框架,从而能够将更多精力集中在业务逻辑的实现上。

下面是对 starter 机制的一些基本理解:

  1. 简化依赖管理starter POM(Project Object Model)文件是一些预定义的 Maven 或 Gradle 依赖集合,它们包含了一组特定功能所需的库。例如,spring-boot-starter-web 包含了创建一个 Web 应用所需的所有基础依赖,如 Spring Web MVC, Tomcat, Jackson 等。

  2. 自动配置:当添加了一个 starter 依赖后,Spring Boot 会自动查找并应用相关的自动配置类。这意味着开发者不需要手动编写复杂的配置来启用某个功能,框架会根据项目的依赖自动设置好大部分的配置。

  3. 约定优于配置:这是 starter 机制的核心理念之一。Spring Boot 预设了一些合理的默认配置,这样开发者可以不用去关心一些细节配置,从而能够更专注于业务逻辑的实现。

  4. 可扩展性:尽管 starter 提供了很多方便,但它也支持高度定制化。如果开发者需要对某些默认行为进行调整,可以通过提供自己的配置类来覆盖或扩展自动配置的行为。

  5. 简化起步引导starter 使得开发者能够以最少的配置开始一个新的项目。只需要在 pom.xmlbuild.gradle 文件中加入相应的 starter 依赖,就可以快速启动服务,而无需担心底层依赖之间的兼容性和版本冲突问题。

  6. 社区生态:Spring Boot 社区提供了大量的 starter 模块,涵盖了从数据库访问到消息队列等众多领域,这极大地丰富了开发者的选择,同时也促进了技术栈的标准化。

二、实现自定义Starter的核心步骤

1. 创建Maven项目或Gradle项目

首先,你需要创建一个新的Maven或Gradle项目来包含你的starter包。

请注意,这个项目是一个库项目,而不是应用程序。此时不应该使用的SpringBoot的打包插件 spring-boot-maven-plugin,而应该使用Maven默认的打包插件(不添加插件配置即可)。

使用 spring-boot-maven-plugin 打出来的jar包,是一个可运行的应用程序(命令 java -jar xxx.jar 即可运行),不是作为库文件的。

2. 创建自动配置类

根据你的库的功能需求,创建一个或多个自动配置类。这些类会通过@EnableAutoConfiguration或者@SpringBootApplication自动注册到Spring容器中。在自动配置类中,导入需要在目标应用启动时自动添加到容器的组件(Bean)。

示例:

package com.example.robot;

import com.example.robot.core.property.RobotProperties;
import com.example.robot.web.service.RobotService;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Import({RobotService.class, RobotProperties.class})
@Configuration
public class RobotAutoConfiguration {
}

示例代码中是通过 @Import 注入,也可以通过 @Bean 导入。结合条件注入注解,还可以实现更加定制化的注入。

3. 指定自动配置类的位置(SPI)

依赖 SpringBoot 的 SPI 机制,应用可以发现自动配置类的位置。用来指定自动配置类的文件,放在META-INF/spring/ 目录下,文件名为 org.springframework.boot.autoconfigure.AutoConfiguration.imports 。文件中的内容是自动配置类的全限定名(包含包名和类名),每个自动配置类独占一行。

注意: META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件,是SpringBoot3版本使用的;之前的SpringBoot版本,配置文件不同。

示例:

在这里插入图片描述

此配置文件在 jar 包中的位置:

在这里插入图片描述

4. 使用starter

在目标SpringBoot项目中,通过 坐标 引入 自定义Starter 的依赖。此时,自动配置生效,自定义Starter中的组件会在项目启动时,自动注入到容器中。

例如,在目标应用的pom.xml文件中添加如下依赖:

        <dependency>
            <groupId>com.example</groupId>
            <artifactId>robot-spring-boot-starter</artifactId>
            <version>1.0.0</version>
        </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋冠巡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值