如何在SpringBoot中自定义starter
Spring Boot 提供了一种简便的方法来创建自定义的 starter,从而帮助开发者封装常用的配置和依赖。本文将介绍如何在 Spring Boot 中自定义一个 starter。
1. 创建 Maven 项目
首先,创建一个新的 Maven 项目,用于我们的自定义 starter。该项目应该包含以下文件结构:
my-spring-boot-starter
│── src
│ └── main
│ └── java
│ └── resources
│── pom.xml
在 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>
<groupId>com.example</groupId>
<artifactId>my-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
</parent>
<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. 创建自动配置类
在 src/main/java
目录下创建一个自动配置类,例如 MyAutoConfiguration
:
package com.example;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyAutoConfiguration {
@Bean
public MyService myService() {
return new MyService();
}
}
3. 创建配置属性类
在 src/main/java
目录下创建一个配置属性类,例如 MyProperties
:
package com.example;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "my")
public class MyProperties {
private String name = "defaultName";
// getter and setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4. 创建 META-INF/spring.factories 文件
在 src/main/resources/META-INF
目录下创建一个 spring.factories
文件,并添加以下内容:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.MyAutoConfiguration
5. 测试自定义 starter
创建一个新的 Spring Boot 应用程序,并在 pom.xml
中添加自定义 starter 的依赖:
<dependency>
<groupId>com.example</groupId>
<artifactId>my-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
在应用程序中使用 MyService
和 MyProperties
:
package com.example.demo;
import com.example.MyService;
import com.example.MyProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
@Autowired
private MyService myService;
@Autowired
private MyProperties myProperties;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@PostConstruct
public void init() {
System.out.println(myService.sayHello());
System.out.println("Name from properties: " + myProperties.getName());
}
}
参考链接
- Spring Boot Reference Documentation: https://docs.spring.io/spring-boot/docs/current/reference/html/