自定义 Spring Boot Starter 流程

时间:2024-12-18 06:55:57

springboot,vue,springcloudalibaba课程视频,有需要可以看看

<!-- springboot,springboot整合redis,整合rocketmq视频: -->
https://www.bilibili.com/video/BV1nkmRYSErk/?vd_source=14d27ec13a4737c281b7c79463687112

<!-- springcloudalibaba,openfeign,nacos,gateway,sso视频:-->
https://www.bilibili.com/video/BV1cFDEYWEkY/?vd_source=14d27ec13a4737c281b7c79463687112

<!-- vue+springboot前后端分离视频:-->
https://www.bilibili.com/video/BV1JLSEYJETc/?vd_source=14d27ec13a4737c281b7c79463687112

<!-- shiro视频:-->
https://www.bilibili.com/video/BV1YVUmYJEPi/?vd_source=14d27ec13a4737c281b7c79463687112

自定义 Spring Boot Starter 流程

创建一个自定义的 Spring Boot Starter 通常包括以下步骤:

  1. 创建 Maven 项目:为 Starter 创建一个新的 Maven 模块。
  2. 定义依赖:在 pom.xml 中定义 Starter 需要的依赖。
  3. 创建配置属性类:定义一个配置属性类,使用 @ConfigurationProperties 注解来绑定配置文件中的属性。
  4. 创建自动配置类:创建一个配置类,使用 @Configuration 注解,并使用 @EnableConfigurationProperties 来启用配置属性类。
  5. 定义 Bean:在自动配置类中定义所需的 Bean,并使用条件注解(如 @ConditionalOnMissingBean)来控制 Bean 的创建。
  6. 创建 spring.factories 文件:在 META-INF 目录下创建 spring.factories 文件,声明自动配置类。
  7. 打包和安装:将 Starter 打包并安装到本地 Maven 仓库或发布到远程仓库。
  8. 在主项目中使用:在主项目的 pom.xmlbuild.gradle 中添加自定义 Starter 的依赖。
  9. 配置属性:在主项目的配置文件中设置 Starter 所需的属性。

自定义 Spring Boot Starter 案例

假设我们要创建一个名为 my-spring-boot-starter-greeter 的 Starter,用于添加一个简单的问候功能。

  1. 创建 Maven 项目

首先,创建一个新的 Maven 模块,比如叫 greeter-spring-boot-starter

  1. 定义依赖

greeter-spring-boot-starterpom.xml 文件中添加以下内容:

<groupId>com.example</groupId>
<artifactId>greeter-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>
  1. 创建配置属性类

创建一个名为 GreeterProperties 的类,用于绑定配置文件中的属性:

package com.example.greeter.properties;

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

@Component
@ConfigurationProperties(prefix = "greeter")
public class GreeterProperties {
    private String message = "Hello";

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
  1. 创建自动配置类

创建一个自动配置类 GreeterAutoConfiguration

package com.example.greeter.autoconfigure;

import com.example.greeter.properties.GreeterProperties;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConditionalOnProperty(name = "greeter.enabled", havingValue = "true")
public class GreeterAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public Greeter greeter(GreeterProperties properties) {
        return new Greeter(properties.getMessage());
    }
}
  1. 定义 Greeter Bean

创建 Greeter 类,它将使用配置的问候语:

package com.example.greeter;

public class Greeter {
    private String message;

    public Greeter(String message) {
        this.message = message;
    }

    public void greet() {
        System.out.println(message + ", World!");
    }
}
  1. 创建 META-INF/spring.factories 文件

src/main/resources/META-INF 目录下创建 spring.factories 文件,并添加自动配置类的全限定名:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.greeter.autoconfigure.GreeterAutoConfiguration
  1. 打包和安装

使用 Maven 命令 mvn install 将 Starter 安装到本地仓库。

  1. 在主项目中使用

在主项目的 pom.xml 中添加 Starter 的依赖:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>greeter-spring-boot-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
  1. 配置属性

在主项目的 application.propertiesapplication.yml 文件中设置问候语:

greeter.message=Good Morning
greeter.enabled=true

现在,当你的主项目启动时,如果 greeter.enabled 设置为 trueGreeter Bean 将被创建,并使用配置的问候语。你可以通过注入 Greeter 并调用 greet() 方法来使用这个功能。