如何自定义一个 SpringBoot Srarter?

如何自定义一个 SpringBoot Srarter?
了解了自动配置原理后,创建自定义的 Spring Boot Starter 也变得简单。
- 创建一个名为
demo-spring-boot-starter
的项目,并引入 Spring Boot 相关依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
- 编写配置文件:
在配置类中定义属性配置的前缀:
@ConfigurationProperties(prefix = "hello")
public class HelloProperties {
private String name;
// 省略 getter 和 setter
}
- 自动装配:
创建自动配置类HelloAutoConfiguration
:
@Configuration
@EnableConfigurationProperties(HelloProperties.class)
public class HelloAutoConfiguration {
}
- 配置自动装配类:
在/resources/META-INF/spring.factories
文件中添加自动配置类的路径:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.demo.starter.HelloAutoConfiguration
- 进行测试:
- 创建一个工程,并引入自定义 Starter 的依赖:
<dependency>
<groupId>com.example</groupId>
<artifactId>demo-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
- 在配置文件中添加配置:
hello.name=张三
- 编写测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloTest {
@Autowired
HelloProperties helloProperties;
@Test
public void hello() {
System.out.println("你好," + helloProperties.getName());
}
}
- 运行结果可见输出:
你好,张三
至此,随手写的一个自定义 SpringBoot-Starter 就完成了,虽然比较简单,但是完成了主要的自动装配的能力。