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

自定义spring-boot-starter

自定义命名规范:格式:{项目名}-spring-boot-starter

1. 项目结构

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

2. 添加依赖(pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>my-spring-boot-starter</artifactId><version>1.0.0</version><packaging>jar</packaging><dependencies><!-- Spring Boot 自动配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><!-- 可选:使application.yml 有配置提示功能  optional=ture 只在当前项目有用,不会进行依赖传递 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies>
</project>

3.1 配置属性类(MyStarterProperties.java

package com.example.starter;import org.springframework.boot.context.properties.ConfigurationProperties;@ConfigurationProperties(prefix = "my.starter")
public class MyStarterProperties {private String message = "默认消息";public String getMessage() { return message; }public void setMessage(String message) { this.message = message; }
}

3.2 自动配置类(MyStarterAutoConfiguration.java

package com.example.starter;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableConfigurationProperties(MyStarterProperties.class)
public class MyStarterAutoConfiguration {// MyServiceImpl 功能实现类@Bean@ConditionalOnMissingBeanpublic MyService myService(MyStarterProperties properties) {return new MyServiceImpl(properties.getMessage());}
}

4. 配置自动加载(spring.factories

  • 方式 1(spring-boot 2.x):在 src/main/resources/META-INF/spring.factories 中添加,如果有多个自动配置类,使用英文逗号分割
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.example.starter.MyStarterAutoConfiguration
  • 方式 2(Spring Boot 3.x+ 推荐):在 src/main/resources/META-INF/spring/AutoConfiguration.imports 中直接写类名,如果有多个自动配置类,不需要使用任何分隔符(如逗号、分号、空格等)。每个类名应该独占一行
com.example.starter.MyStarterAutoConfiguration

5. 放入本地maven仓库

mvn clean install

6. 其它项目(模块)引入使用

<dependency><groupId>com.example</groupId><artifactId>my-spring-boot-starter</artifactId><version>1.0.0</version>
</dependency>

http://www.lryc.cn/news/603096.html

相关文章:

  • Python defaultdict 的强大之处:告别繁琐的字典键检查: Effective Python 第17条
  • days34:零基础学嵌入式之数据存储——数据库
  • Sentinel 不同层面的流控保护
  • Java中实现定时任务执行的方式总结
  • 反欺诈系统:Oracle 到 ES 迁移实战
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博文章数据可视化分析-点赞区间实现
  • Java类加载机制详解
  • AI coding汇总持续更新
  • STM32启动流程
  • 【学习路线】Android开发2025:从入门到高级架构师
  • Unity_UI_NGUI_锚点组件
  • 【java面试day7】redis分布式锁
  • SpringBoot 发送邮件
  • 五自由度磁悬浮轴承转子不平衡质量的高性能控制策略全解析
  • 算法训练营day34 动态规划② 62.不同路径、63. 不同路径 II、343整数拆分、96.不同的二叉搜索树
  • Java响应式编程
  • ATF 运行时服务
  • ros2的package.xml和rosdep
  • 基于深度学习的医学图像分析:使用3D CNN实现肿瘤检测
  • 第十天:字符菱形
  • 一个Pycharm窗口添加多个项目来满足运行多个项目的需求
  • DDoS攻击防御:从5G到T级防护方案全对比
  • 企业级日志分析系统ELK
  • Python动态规划:从基础到高阶优化的全面指南(3)
  • 历史版本的vscode下载地址
  • 实验-静态路由
  • 智慧工地系统:科技赋能建筑新未来
  • 学习dify:一个开源的 LLM 应用开发平台
  • 【GitHub Workflows 基础(二)】深入理解 on、jobs、steps 的核心语法与执行逻辑
  • 【2025/07/28】GitHub 今日热门项目