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

SpringBoot如何自定义Starter ?

大家好,我是锋哥。今天分享关于【SpringBoot如何自定义Starter ?】面试题。希望对大家有帮助;

SpringBoot如何自定义Starter ?

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

在 Spring Boot 中,自定义 Starter 是一种将应用程序的特定功能封装为可复用组件的方式。通过创建一个自定义的 Starter,可以将常用的配置、功能和依赖项集中在一起,以便其他应用程序通过简单的引入依赖即可使用。自定义 Starter 主要包括以下几个步骤:

1. 创建自定义 Starter 项目

首先,创建一个新的 Maven 项目作为自定义 Starter 的基础。

(1) 初始化 Maven 项目

你可以使用 Spring Initializr 或手动创建一个 Maven 项目。确保在项目的 pom.xml 中添加适当的依赖。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>
(2) 项目结构

通常,自定义 Starter 项目的结构如下:

my-spring-boot-starter
├── src
│   └── main
│       └── java
│           └── com
│               └── example
│                   └── starter
│                       ├── MyCustomStarterAutoConfiguration.java
│                       └── MyService.java
└── pom.xml

2. 创建自动配置类

Spring Boot 的 Starter 依赖于自动配置类,自动配置类用来提供相关的配置和 Bean。自定义 Starter 的核心是创建一个自动配置类。

(1) 创建自动配置类

自动配置类负责根据类路径中的可用类、配置属性等自动配置 Bean。例如,你可以创建一个 MyCustomStarterAutoConfiguration 类。

package com.example.starter;

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConditionalOnClass(MyService.class)  // 只有在 classpath 中存在 MyService 时才进行配置
public class MyCustomStarterAutoConfiguration {

    @Bean
    public MyService myService() {
        return new MyService();
    }
}

在这个类中:

  • @Configuration 标注表明这是一个 Spring 配置类。
  • @ConditionalOnClass 注解用于判断某个类是否在类路径中。如果存在该类,则进行配置。
  • @Bean 注解用于注册一个 MyService 实例。
(2) 创建服务类

你可以在自定义 Starter 中提供一些通用的服务类(如 MyService):

package com.example.starter;

public class MyService {
    public void doSomething() {
        System.out.println("Doing something in MyService...");
    }
}

3. 创建 spring.factories 文件

为了让 Spring Boot 能够识别并加载你的自动配置类,你需要在 META-INF/spring.factories 文件中注册你的自动配置类。

src/main/resources/META-INF/ 目录下创建一个 spring.factories 文件,并将自动配置类添加到其中:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.starter.MyCustomStarterAutoConfiguration

4. 创建 Starter 的依赖关系

pom.xml 中,你需要添加 Spring Boot 自动配置的依赖项,并确保该模块作为一个可发布的依赖项。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <archive>
                    <manifestEntries>
                        <Spring-Boot-Autoconfigure>com.example.starter.MyCustomStarterAutoConfiguration</Spring-Boot-Autoconfigure>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

5. 打包和发布 Starter

完成自定义 Starter 的开发后,你可以通过 Maven 构建项目并将其打包发布到本地或远程仓库(如 Maven Central 或私有仓库)。

mvn clean install

6. 在 Spring Boot 应用中使用自定义 Starter

使用自定义 Starter 非常简单,只需将其添加到应用程序的 pom.xml 中作为依赖:

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

Spring Boot 会自动扫描并加载 Starter 提供的自动配置类,并根据需要创建相关的 Bean。

7. 可选:提供配置属性

有时候,你可能希望自定义 Starter 能够接受配置属性。你可以在自动配置类中使用 @ConfigurationProperties 注解来绑定外部配置(如 application.propertiesapplication.yml)中的值。

package com.example.starter;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "myservice")
public class MyServiceProperties {
    private String message;

    // getters and setters
}

然后在自动配置类中将该配置属性注入到相关的 Bean 中:

@Bean
public MyService myService(MyServiceProperties properties) {
    MyService service = new MyService();
    service.setMessage(properties.getMessage());
    return service;
}

application.propertiesapplication.yml 中,可以定义该属性:

myservice.message=Hello, Custom Service!

总结

创建一个自定义 Starter 主要涉及以下几个步骤:

  1. 创建自动配置类,用于提供 Starter 的功能和配置。
  2. 使用 spring.factories 文件注册自动配置类。
  3. 打包并发布 Starter。
  4. 在目标应用中通过引入依赖来使用自定义 Starter。

通过这种方式,Spring Boot 提供了一个灵活的机制来封装常用功能和配置,使得其他项目可以更轻松地复用这些功能。


http://www.kler.cn/a/516448.html

相关文章:

  • 【前端】Hexo 部署指南_hexo-deploy-git·GitHub Actions·Git Hooks
  • 利用Kubespray安装生产环境的k8s集群-排错篇
  • MECD+: 视频推理中事件级因果图推理--VLM长视频因果推理
  • 通过视觉语言模型蒸馏进行 3D 形状零件分割
  • 【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
  • 5.SQLAlchemy对两张有关联关系表查询
  • 【BUUCTF】[HITCON 2017]SSRFme1
  • 总结7。。
  • 指针生成网络(PGN)详细指南(引入)
  • 【橘子Kibana】Kibana的分析能力Analytics简易分析
  • mybatis-plus之使用lombok的@Builder注解之后的坑
  • selenium xpath定位一组元素中的某一个
  • 使用BitaHub部署DeepSeek-R1
  • malloc与new的比较
  • JAVA-快速排序
  • war包 | Docker部署flowable-ui
  • 《从入门到精通:蓝桥杯编程大赛知识点全攻略》(六)-分巧克力、K倍区间
  • 2000-2020年各省第二产业增加值数据
  • uniapp商城项目之创建启动(一)
  • Unity——鼠标是否在某个圆形Image范围内
  • Frida使用指南(三)
  • ThreeJS示例教程200+【目录】
  • 大数据学习(39)- Flink并行度
  • Springboot3 自动装配流程与核心文件:imports文件
  • machine learning knn算法之使用KNN对鸢尾花数据集进行分类
  • AIP-127 HTTP和gRPC转码