《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://jianshu.com/u/36510c75d37c 「jackieonway」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

前言

短信服务在用户注册、登录、找回密码等相关操作中,可以让用户使用更加便捷,越来越多的公司都采用短信验证的方式让用户进行操作,从而提高用户的实用性。

Spring Boot Starter

由于 Spring boot 的约定大于配置的理念,使得在使用Spring变得更加方便。Spring Boot 项目组提供了很多Starter ,让我们在使用 Spring 的时候变得非常容易。对于官方提供的Starter 采用 spring-boot-starter-xxx开头,对于非官方提供的Spring Boot Starter ,官方建议采用 xxxx-spring-boot-starter命名。

短信服务Starter

1. 开发工具及编译

IntelliJ IDEA 2018.2.5 Maven 3.5 JDK 1.8

2. 如何使用sms-spring-boot-starter

(1). 在pom文件中引入

<dependency>
<groupId>com.github.jackieonway.sms</groupId>
<artifactId>sms-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

在pom.xml中配置maven中央仓库Snapshots地址

<repositories>
<repository>
<id>mavenRepoCenter</id>
<name>Maven Development Snapshot Repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

(2).在application.yml中加入

spring:
jackieonway:
sms:
sms-type: tentcent # 短信服务商 暂目前只有 腾讯和阿里的短信服务,默认为ali
security-key: your security-key # 短信的私钥
appid: your appid # 短信的应用id
sign: your sign # 短信的签名

(3). 在Springboot主程序中 加入

@EnabledSmsAutoConfiguration

(4). 创建发送短信程序

  1. 可以采用排除相关依赖的方式注入Service
  2. 可以采用加 @Qualifier("tencentSmsService")的方式注入Service , value的可选值目前只有 tencentSmsService 和aliSmsService两种,
  3. 可以采用 @Autowired private SmsService tencentSmsService; 注入,方式与方法2类似 采用方式1,最终的jar包将会比方式2和方法3小,但是最终只有一种短信模式 生效,即只能使用一个短信运营商的服务,方式2,3能快速切换短信运营商

@RestController
public class HelloController {

/**
* 1. 可以采用排除相关依赖的方式注入Service
* 2. 可以采用加 @Qualifier("tencentSmsService")的方式注入Service ,
* value的可选值目前只有 tencentSmsService 和aliSmsService两种,
* 3. 可以采用
* @Autowired
* private SmsService tencentSmsService;
* 注入,方式与方法2类似
* 采用方式1,最终的jar包将会比方式2和方法3小,但是最终只有一种短信模式
* 生效,即只能使用一个短信运营商的服务,方式2,3能快速切换短信运营商
*/

@Autowired
private SmsService tencentSmsService;

// @Autowired
// private SmsService aliSmsService;

@GetMapping("/tencent")
public Object tencent() {
// 具体配置请参照具体运营商
// your template params
String[] paramst = {"5678","5"};
TencentSmsRequest tencentSmsRequest = new TencentSmsRequest();
tencentSmsRequest.setPhoneNumber(new String[]{"your cellphone"});
tencentSmsRequest.setParams(paramst);
return tencentSmsService.sendTemplateSms("328921", tencentSmsRequest);
}

/* @GetMapping("/ali")
public Object ali() {
// 具体配置请参照具体运营商
AliSmsRequest aliSmsRequest = new AliSmsRequest();
aliSmsRequest.setOutId("420");
aliSmsRequest.setPhoneNumbers(new String[]{"your cellphone"});
aliSmsRequest.setTemplateParam("{\"code\":\"asdsads\"}");
aliSmsRequest.setSignName("123");
return aliSmsService.sendTemplateSms("328921",aliSmsRequest);
}*/
}

(5). 发送

访问 localhost:8080/tencent

发送结果

3. SmsService接口

/**
* 单个发送短信
* @param params 根据对应的短信服务商所需信息填写
*/
public Object sendSms(Integer type,Object params) throws SmsException;

/**
* 单个发送模板短信
* @param tempalteId 短信模板id
* @param params 根据对应的短信服务商所需信息填写
*/
public Object sendTemplateSms(String tempalteId, Object params) throws SmsException;

/**
* 批量发送短信
* @param params 根据对应的短信服务商所需信息填写
*/
public Object sendBatchSms(int type,Object params) throws SmsException;

/**
* 批量发送模板短信
* @param tempalteId 短信模板id
* @param params 根据对应的短信服务商所需信息填写
*/
public Object sendBatchTemplateSms(String tempalteId, Object params) throws SmsException;

该接口提供了单个和群发短信与模板短信,注意目前只提供了同步发送方法,异步发送方法,请结合线程池进行。

总结

只是针对腾讯短信服务进行了试验,阿里的短信服务并未真正验证,希望各位小伙伴能合作完成验证,共同完善该starter,觉得有用请starter该项目。如果只想使用而腾讯云短信业务的话,按照Demo使用即可。

github地址: 关于【Java 基基】,回复【短信】。

文章目录
  1. 1. 前言
  2. 2. Spring Boot Starter
  3. 3. 短信服务Starter
    1. 3.1. 1. 开发工具及编译
    2. 3.2. 2. 如何使用sms-spring-boot-starter
      1. 3.2.1. (1). 在pom文件中引入
      2. 3.2.2. (2).在application.yml中加入
      3. 3.2.3. (3). 在Springboot主程序中 加入
      4. 3.2.4. (4). 创建发送短信程序
      5. 3.2.5. (5). 发送
    3. 3.3. 3. SmsService接口
  4. 4. 总结