编写SpringBoot的自定义starter包

Spring Boot提供了一种方便的机制,可以让开发者创建自定义Starter包,以便在多个项目中复用公共配置和组件。本文将详细介绍如何创建一个Spring Boot自定义Starter包,并展示其在实际项目中的应用。

一、Spring Boot Starter的基本结构

一个Spring Boot Starter通常包含以下几个部分:

  1. 自动配置类:自动配置相关的Bean。
  2. 配置属性类:定义可以配置的属性。
  3. META-INF/spring.factories文件:声明自动配置类。
  4. 依赖管理:指定其他必要的依赖。

二、创建自定义Starter包的步骤

2.1 创建Maven项目

首先,创建一个新的Maven项目,并添加必要的依赖:

<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>
    <groupId>com.example</groupId>
    <artifactId>custom-starter</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <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>
</project>
​
 
 

2.2 创建自动配置类

src/main/java目录下创建自动配置类:

package com.example.customstarter;

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

@Configuration
public class CustomAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public CustomService customService() {
        return new CustomService();
    }
}
​
 
 

CustomService类:

package com.example.customstarter;

public class CustomService {
    public void doSomething() {
        System.out.println("Custom Service is doing something...");
    }
}
​
 
 

2.3 创建配置属性类

src/main/java目录下创建配置属性类:

package com.example.customstarter;

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

@ConfigurationProperties(prefix = "custom")
public class CustomProperties {
    private String message = "Hello, Custom Starter!";

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
​
 
 

在自动配置类中引入配置属性:

package com.example.customstarter;

import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(CustomProperties.class)
public class CustomAutoConfiguration {

    private final CustomProperties properties;

    public CustomAutoConfiguration(CustomProperties properties) {
        this.properties = properties;
    }

    @Bean
    @ConditionalOnMissingBean
    public CustomService customService() {
        CustomService service = new CustomService();
        service.setMessage(properties.getMessage());
        return service;
    }
}
​
 
 

更新 CustomService类以使用配置属性:

package com.example.customstarter;

public class CustomService {
    private String message;

    public void setMessage(String message) {
        this.message = message;
    }

    public void doSomething() {
        System.out.println(message);
    }
}
​
 
 

2.4 创建 spring.factories文件

src/main/resources/META-INF目录下创建 spring.factories文件:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.example.customstarter.CustomAutoConfiguration
​
 
 

2.5 打包发布

使用以下命令打包:

mvn clean install
​
 
 

三、在项目中使用自定义Starter

3.1 创建Spring Boot应用

创建一个新的Spring Boot项目,并添加自定义Starter的依赖:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>custom-starter</artifactId>
    <version>1.0.0</version>
</dependency>
​
 
 

3.2 配置应用属性

application.properties中配置自定义属性:

custom.message=Welcome to the Custom Starter!
​
 
 

3.3 使用自定义服务

在Spring Boot应用中使用 CustomService

package com.example.demo;

import com.example.customstarter.CustomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

    @Autowired
    private CustomService customService;

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        customService.doSomething();
    }
}
​
 
 

运行应用程序,控制台将输出配置的消息:

Welcome to the Custom Starter!
​
 
 

四、总结

通过本文的介绍,我们详细讲解了如何创建一个Spring Boot自定义Starter包,包括自动配置类、配置属性类、spring.factories文件的创建和配置。通过自定义Starter,可以有效地复用公共配置和组件,提高开发效率。希望本文能帮助您更好地理解和应用Spring Boot自定义Starter,在实际项目中灵活使用这一强大的功能。

posted @ 2025-05-08 09:45  kiyte  阅读(329)  评论(0)    收藏  举报