4.3 starter 制作步骤

4.3.1 一个完整的Spring Starter库包含以下组件(也可以合并以下组件为一个组件)
  • 自动化配置模块
  • 启动器模块

    4.3.2 Starter 的命名规范
  • 对于Spring 官方的命名: spring-boot-starter-{name} 如: spring-boot-starter-web

  • 第三方库的命名: 如果是分开配置模块和启动模块的,
    • 配置模块命名为 :{name}-spring-boot-autoconfigure
    • 启动器模块: {name}-spring-boot-starter
    • 合并的则直接命名{name}-spring-boot-starter;

4.3.3 步骤
  • 添加依赖

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-autoconfigure</artifactId>
    4. <version>2.2.0.RELEASE</version>
    5. <optional>true</optional>
    6. </dependency>
  • 设置打包方式

    1. <packaging>jar</packaging>
  • 定义属性配置类

    1. //用于在*.properties文件中定义, 如:hello.msg = hello world!
    2. @ConfigurationProperties(prefix = "hello")
    3. public class HelloProperties {
    4. private String msg;
    5. public String getMsg() {
    6. return msg;
    7. }
    8. public void setMsg(String msg) {
    9. this.msg = msg;
    10. }
    11. }
  • 定义自动配置类

    1. @Configuration
    2. @ConditionalOnClass({HelloService.class})
    3. @EnableConfigurationProperties(HelloProperties.class)
    4. public class HelloAutoConfiguration {
    5. @Autowired
    6. private HelloProperties helloProperties;
    7. @ConditionalOnMissingBean({HelloService.class})
    8. @Bean
    9. public HelloService logservice() {
    10. return new HelloService(helloProperties.getMsg());
    11. }
    12. }
  • 定义starter 具体功能

    1. public class HelloService {
    2. private String msg;
    3. public HelloService(String msg) {
    4. this.msg = msg;
    5. }
    6. public void syaHello() {
    7. System.out.println(msg);
    8. }
    9. }
  • 设置配置类

    1. //(路径:resources/META-INF/spring.factories)
    2. //用于Spring使用SPI机制加载配置类
    3. org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.hdj.configuration.HelloAutoConfiguration

    然后,就可以打jar包,发布到maven 中供其他项目引入使用