作者:Sans_
一.说明
我们在使用SpringBoot的时候常常要引入一些Starter,例如spring-boot-starter-web,官方为我们提供了几乎所有的默认配置,很好的降低了使用框架时的复杂度。
所以在用xxx-starter的时候,可以不用费心去写一些繁琐的配置文件,即使必要的配置在application.properties或application.yml中配置就可以了,当你实现了一个Starter,可以在不同的项目中复用,非常方便,今天我们来编写自己的Starter以之前的短信业务为例。
参考: https:// juejin.im/post/5cb16548 6fb9a068a60c2827
spring-boot-starter-xxx是官方提供Starter的命名规则,非官方Starter的命名规则官方建议为 xxx-spring-boot-starter
二.搭建项目
建立SpringBoot项目,清除resources下的文件和文件夹
Maven依赖如下:
<dependencies>
<!--封装Starter核心依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<!--非必需,该依赖作用是在使用IDEA编写配置文件有代码提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<!-- lombok 插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<optional>true</optional>
</dependency>
<!-- 因为要使用RestTemplate和转换Json,所以引入这两个依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.45</version>
</dependency>
</dependencies>
spring-boot-configuration-processor不是必须的,它的作用是和编译时生成 spring-configuration-metadata.json,此文件主要给IDEA使用。
配置此JAR相关配置属性在 application.yml中,你可以用Ctrl+鼠标左键点击属性名,IDE会跳转到你配置此属性的类中,并且编写application.yml会有代码提示。
三.编写项目基础类
创建SendSMSDTO传输类,用于参数传递
/**
创建RestTemplateConfig配置类,用于调用短信接口
/**
创建短信接口枚举类,用于存放短信接口API地址
/**
四.编写Starter自动配置类
创建SmsProperties配置属性类,该类主要用于读取yml/properties信息
/**
创建短信核心服务类
/**
创建SmsAutoConfiguration自动配置类,该类主要用于创建核心业务类实例
/**
五.创建spring.factories文件
spring.factories该文件用来定义需要自动配置的类,SpringBoot启动时会进行对象的实例化,会通过加载类SpringFactoriesLoader加载该配置文件,将文件中的配置类加载到spring容器
在src/main/resources新建META-INF文件夹,在META-INF文件夹下新建spring.factories文件。配置内容如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.sms.starter.config.SmsAutoConfiguration
六.打包和测试
使用Maven插件,将项目打包安装到本地仓库
新建测试项目,引入我们自己的Starter,Maven依赖如下:
<
配置测试项目的application.yml
sms-config:
account-sid: //这里填写平台获取的ID和KEY
auth-token: //这里填写平台获取的ID和KEY
appid: //这里填写平台获取的ID和KEY
参数填写自己的手机号和申请的模板以及对应的参数
/**