我们在使用SpringBoot的时候常常要引入一些起动器,例如spring-boot-starter-web,官方为我们提供了几乎所有的默认配置,很好的降低了使用框架时的复杂度,所以在用xxx-starter的时候,可以不用费心去写一些繁琐的配置文件,即使必要的配置在application.properties或application.yml中配置就可以了,当你实现了一个启动器,可以在不同的项目中复用,非常方便,今天我们来编写自己的起动器以之前的短信业务为例。
Springboot短信业务调用:https://www.jb51.net/article/160092.htm
spring-boot-starter-xxx是官方提供起动器的命名规则,非官方起动器的命名规则官方建议为xxx-spring-boot-starter
建立SpringBoot项目,清除资源下的文件和文件夹
<人物> 图>
Maven依赖如下:
& lt; dependencies> & lt; !——封装起动器核心依赖——比; & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter & lt; version> 2.1.3.RELEASE & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-autoconfigure & lt; version> 2.1.3.RELEASE & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-configuration-processor & lt; version> 2.1.3.RELEASE & lt;/dependency> & lt; !——lombok插件——比; & lt; dependency> & lt; groupId> org.projectlombok & lt; artifactId> lombok & lt; version> 1.18.6 & lt; optional> true & lt;/dependency> & lt; !——因为要使用创建RestTemplate和转换Json,所以引入这两个依赖——比; & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-web & lt; version> 2.1.3.RELEASE & lt;/dependency> & lt; dependency> & lt; groupId> com.alibaba & lt; artifactId> fastjson & lt; version> 1.2.45 & lt;/dependency> & lt;/dependencies>
创建SendSMSDTO传输类,用于参数传递
/* * * SMSDTO参数类 * @Author无 * @CreateTime 2019/4/20 * @attention */@ data 公开课SendSMSDTO {/* * *模板ID */私人字符串templateid;/* * *参数 */私人字符串参数;/* * *手机号 */私人字符串移动;/* * *用户穿透ID,可以为空 */私人字符串uid; }
创建RestTemplateConfig配置类,用于调用短信接口
/* * * RestTemplateConfig配置 * @Author无 * @CreateTime 2019/4/20 * @attention */@ configuration 公开课RestTemplateConfig { @ bean 公众创建RestTemplate创建RestTemplate () { 返回新创建RestTemplate (); } }
创建短信接口枚举类,用于存放短信接口API地址
/* * *短信请求API枚举 * @Author无 * @CreateTime 2019/4/20 * @attention */@ getter 公共enum ENUM_SMSAPI_URL { SENDSMS (“https://open.ucpaas.com/ol/sms/sendsms”), SENDBATCHSMS (“https://open.ucpaas.com/ol/sms/sendsms_batch”); 私人字符串url; ENUM_SMSAPI_URL(字符串url) { 这一点。url=url; } }
创建SmsProperties配置属性类,该类主要用于读取yml/属性信息
/* * *短信配置属性类 * @Author无 * @CreateTime 2019/4/20 * @attention使用ConfigurationProperties注解可将配置文件(yml/属性)中指定前缀的配置转为bean */@ data @ConfigurationProperties(前缀=皊ms-config”) 公开课SmsProperties { 私人字符串appid; 私人字符串accountSid; 私人字符串authToken; }
创建短信核心服务类
/* * *短信核心服务类 * @Author无 * @CreateTime 2019/4/20 * @attention */公开课SmsService { @ autowired 私人创建RestTemplate创建RestTemplate; 私人字符串appid; 私人字符串accountSid; 私人字符串authToken;/* * *初始化 */公共SmsService (SmsProperties SmsProperties) { 这一点。appid=smsProperties.getAppid (); 这一点。accountSid=smsProperties.getAccountSid (); 这一点。authToken=smsProperties.getAuthToken (); }/* * *单独发送 */公共字符串sendSMS (SendSMSDTO SendSMSDTO) { JSONObject JSONObject=new JSONObject (); jsonObject。把(sid, accountSid); jsonObject。把(“令牌”,authToken); jsonObject。把(“appid”, appid); jsonObject。put (" templateid ", sendSMSDTO.getTemplateid ()); jsonObject。put(“参数”,sendSMSDTO.getParam ()); jsonObject。put("移动",sendSMSDTO.getMobile ()); 如果(sendSMSDTO.getUid () !=null) { jsonObject.put (“uid”, sendSMSDTO.getUid ()); 其他}{ jsonObject.put (“uid”、“”); } json字符串=JSONObject.toJSONString (jsonObject);//使用创建restTemplate进行访问远程Http服务 HttpHeaders header=new HttpHeaders (); headers.setContentType (MediaType.APPLICATION_JSON_UTF8); HttpEntitySpringBoot封装自己的起动器的实现方法