SpringBoot-自定义starter

1. 命名

SpringBoot提供的starter以spring-boot-starter-xxx的方式命名的。

官方建议自定义的starter使用xxx-spring-boot-starter命名规则。以区分SpringBoot生态提供的starter。

2. 开发

  • 编写properties 属性类(@ConfigurationProperties)

    1
    2
    3
    4
    5
    6
    @ConfigurationProperties(prefix = "demo")
    @Data
    public class DemoProperties {
    private String what;
    private String who;
    }
  • 编写service 接口类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class DemoService {
    private String what;
    private String who;
    public DemoService(String sayWhat, String toWho){
    this.what = sayWhat;
    this.who = toWho;
    }
    public String say(){
    return this.what + "! " + this.who;
    }
    }
  • 编写config 自动配置类(@EnableConfigurationProperties、)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Configuration
    @EnableConfigurationProperties(DemoProperties.class)
    public class DemoConfig {
    @Resource
    private DemoProperties properties;
    @Bean
    public DemoService service(){
    return new DemoService(properties.getSayWhat(),properties.getToWho());
    }
    }
  • 在META-INF/spring.factories 配置自动配置类的全限定名称

    1
    2
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    com.pd.starter.config.DemoConfig

3. 打包安装到本地仓库

springboot项目pom中一般会有以下代码,表明这是一个有启动类的springboot工程。

jar包不需要启动类,所以打包之前要把pom中这一段删掉,否则maven-install时会报cannot find main class 错误

1
2
3
4
5
6
7
8
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

4. 引用

  • 新工程pom中添加依赖
  • application配置文件中可以对以上编写的properties类成员进行配置赋值
  • 使用spring注入方式创建service对象,调用接口方法