⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《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. 总结