当前位置: 首页 > news >正文

【Spring Boot】自定义starter

Spring Boot 自定义Starter

为什么要自定义Starter

Spring Boot Starter 是一种简化依赖管理和自动配置的机制。下面详细介绍如何创建自定义 Starter。

Starter 的基本概念

命名规范

官方 Starter: spring-boot-starter-{name}
自定义 Starter: {name}-spring-boot-starter

核心组件

autoconfigure 模块: 包含自动配置逻辑

starter 模块: 只包含依赖管理

创建自定义 Starter

项目结构

my-starter/
├── my-spring-boot-autoconfigure/
│   ├── src/main/java/
│   │   └── com/example/mystarter/
│   └── pom.xml
└── my-spring-boot-starter/├── src/main/resources/│   └── META-INF/│       └── spring.factories└── pom.xml

自动配置模块

<!-- my-spring-boot-autoconfigure/pom.xml -->
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>
</dependencies>

配置属性类

@ConfigurationProperties(prefix = "my.service")
public class MyServiceProperties {private String prefix = "Hello";private String suffix = "!";// getters and setterspublic String getPrefix() { return prefix; }public void setPrefix(String prefix) { this.prefix = prefix; }public String getSuffix() { return suffix; }public void setSuffix(String suffix) { this.suffix = suffix; }
}

服务类

public class MyService {private final String prefix;private final String suffix;public MyService(String prefix, String suffix) {this.prefix = prefix;this.suffix = suffix;}public String wrap(String message) {return prefix + " " + message + " " + suffix;}
}

自动配置类

@Configuration
@ConditionalOnClass(MyService.class)
@EnableConfigurationProperties(MyServiceProperties.class)
public class MyServiceAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic MyService myService(MyServiceProperties properties) {return new MyService(properties.getPrefix(), properties.getSuffix());}@Bean@ConditionalOnProperty(name = "my.service.enabled", havingValue = "true")@ConditionalOnMissingBeanpublic MyServiceController myServiceController(MyService myService) {return new MyServiceController(myService);}
}

注册自动配置

在 src/main/resources/META-INF/spring.factories 中:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.mystarter.MyServiceAutoConfiguration

需要注意,spring boot 3.x 取消了spring.factories, 替代方案为在路径 src/main/resources/META-INF/spring 创建一个文件org.springframework.boot.autoconfigure.AutoConfiguration.imports

把需要自动装配一行一行放入

com.example.mystarter.MyServiceAutoConfiguration
http://www.zskr.cn/news/12176.html

相关文章:

  • PrintNightmare漏洞仍未终结:深入解析PnP配置绕过与防护方案
  • apt 还是 uv
  • US$39 CAS Mileage Reset Authorization for CGDI Prog BMW MSV80 CAS1 CAS2 CAS3 CAS3+ via OBD
  • ClkLog埋点分析系统-私有化部署+轻量灵活
  • 基于 Docker 的 Nginx + OpenSSL 自签名证书启用 HTTPS
  • PolarFire Soc System Services
  • 高校固定资产管理高效的系统——Java EE毕业设计资源包
  • 标准卷积和空洞卷积--适应不同尺寸的输入--ASPP模块
  • 7timer.info 免费天气预报对接记录
  • 用标准版平板干翻上代Pro,小米又想学苹果了?
  • 记录一下第一次为Dify贡献插件的经历
  • Visual Prompt Builder-AI 提示词可视化工具 - 详解
  • STM32H743-ARM例程2-UART命令控制LED - 实践
  • 12_TCP和UDP实现服务端和客户端的通信
  • Day22super详解
  • 2025年值得选的文件摆渡系统品牌解析
  • 分布式专题——14 RabbitMQ之集群实战 - 指南
  • QT打包工具
  • QT与Spring Boot通信:实现HTTP请求的完整指南 - 教程
  • linux docker 配置外网拉镜像
  • 实用指南:【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(三)
  • 阿里云边缘安全加速ESA
  • 本土项目管理工具Gitee如何助力企业数字化转型
  • 基于OPC UA协议的SIMATIC PLC通信实现
  • Transformer模型/注意力机制/目标检测/语义分割/图神经网络/强化学习/生成式模型/自监督学习/物理信息神经网络等 - 指南
  • 实用指南:解析前端框架 Axios 的设计理念与源码
  • Gitee Wiki:AI赋能的下一代研发知识管理平台如何重塑软件行业协作范式
  • Autodesk Moldflow 2026下载地址与安装教程
  • 深入解析:Java SOA集成:从“混乱“到“有序“的3步蜕变之旅!
  • 程序员利用Python分析股票赚钱,开发了股票行情看板