当前位置: 首页 > 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.dtcms.com/a/302105.html

相关文章:

  • STM32F4—电源管理器
  • 网络安全笔记
  • 图像处理第三篇:初级篇(续)—— 照明的理论知识
  • Springboot社区养老保险系统小程序
  • 基础算法思想——分治
  • 服务器防护教程 - 宝塔篇
  • 大模型应用开发1-认识大模型
  • 【Linux】编辑器vim和编译器gcc/g++
  • go‑cdc‑chunkers:用 CDC 实现智能分块 强力去重
  • mp快速入门
  • AI在编程、测试、数据分析等领域的前沿应用(技术报告)
  • 深度思考和搜索研究 最新的GSPO强化学习算法
  • 第六届金头脑杯夏季巅峰挑战:以智慧之名,点亮幼儿成长之路
  • RV1126B-P机器视觉应用AIoT及边缘计算算力达2.0支持 HDR 、 3DNR
  • Java设计模式之<建造者模式>
  • Go 语言面试题
  • window显示驱动开发—Direct3D 11 视频播放改进
  • WPF,按钮透明背景实现MouseEnter
  • 二级域名分发源码最新开源版
  • 使用Ettus USRP X440对雷达和EW系统进行原型验证
  • 【实时Linux实战系列】基于实时Linux的智能家居系统设计
  • 电脑开机不显示网卡的原因
  • LLM学习笔记5——InstructGPT
  • 用AI压缩音视频,如何让尺寸更紧凑?
  • ADB+Python控制(有线/无线) Scrcpy+按键映射(推荐)
  • 云原生作业(haproxy)
  • LeetCode 2044.统计按位或能得到最大值的子集数目:二进制枚举/DFS回溯(剪枝)
  • Leetcode——42. 接雨水
  • golang--通道和锁
  • 在 CentOS 中安装 MySQL 的过程与问题解决方案