如何自定义一个 SpringBoot Srarter?

了解了自动配置原理后,创建自定义的 Spring Boot Starter 也变得简单。

  1. 创建一个名为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>
  1. 编写配置文件:

在配置类中定义属性配置的前缀:

@ConfigurationProperties(prefix = "hello")
public class HelloProperties {
    private String name;
    // 省略 getter 和 setter
}
  1. 自动装配:

创建自动配置类HelloAutoConfiguration

@Configuration
@EnableConfigurationProperties(HelloProperties.class)
public class HelloAutoConfiguration {
}
  1. 配置自动装配类:

/resources/META-INF/spring.factories文件中添加自动配置类的路径:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    com.example.demo.starter.HelloAutoConfiguration
  1. 进行测试:
  • 创建一个工程,并引入自定义 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 就完成了,虽然比较简单,但是完成了主要的自动装配的能力。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题