前言

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

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:
pengzu:
sms:
sms-type: tentcent # 短信服务商 暂目前只有 腾讯和阿里的短信服务
security-key: your security-key # 短信的私钥
appid: your appid # 短信的应用id
sign: your sign # 短信的签名

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

@EnabledPengzuSmsAutoConfiguration
@ComponentScan(basePackages = {"com.example.demo.sms", //项目包
"com.pengzu.sms"}) // 短信服务所在包

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

@RestController
public class HelloController { @Autowired
private PengzuSmsService pengzuSmsService; @GetMapping("/sayHello")
public Object sayHello() throws ClientException, HTTPException, IOException {
// 具体参数请参考各短信服务商
// your template params
String[] paramst = {"5678","5"};
TencentSmsRequest tencentSmsRequest = new TencentSmsRequest();
tencentSmsRequest.setPhoneNumber(new String[]{"your cellphone"});
tencentSmsRequest.setParams(paramst);
return pengzuSmsService.sendTemplateSms("your template id", tencentSmsRequest);
}
}

(5). 发送

访问 localhost:8080/sayHello

3. PengzuSmsService接口

    /**
* 单个发送短信
* @param params 根据对应的短信服务商所需信息填写
*/
public Object sendSms(Integer type,Object params) throws HTTPException, IOException, ClientException; /**
* 单个发送模板短信
* @param tempalteId 短信模板id
* @param params 根据对应的短信服务商所需信息填写
*/
public Object sendTemplateSms(String tempalteId, Object params) throws HTTPException, IOException, ClientException; /**
* 批量发送短信
* @param params 根据对应的短信服务商所需信息填写
*/
public Object sendBatchSms(int type,Object params) throws HTTPException, IOException, ClientException; /**
* 批量发送模板短信
* @param tempalteId 短信模板id
* @param params 根据对应的短信服务商所需信息填写
*/
public Object sendBatchTemplateSms(String tempalteId, Object params) throws HTTPException, IOException, ClientException;

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

总结

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

github地址:sms-spring-boot-project

作者:jackieonway

链接:https://www.jianshu.com/p/4a3fff5cb2d6

来源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

一个简单易上手的短信服务Spring Boot Starter的更多相关文章

  1. c#简单易用的短信发送服务 悠逸企业短信服务

     悠逸企业短信发送服务,是一种比较简单易操作的短信发送服务,使用POST的方式,请求相应地址就可以实现短信发送功能 1 /// <summary> /// 短信发送服务 /// </ ...

  2. 六、springboot 简单优雅是实现短信服务

    前言 上一篇讲了 springboot 集成邮件服务,接下来让我们一起学习下springboot项目中怎么使用短信服务吧. 项目中的短信服务基本上上都会用到,简单的注册验证码,消息通知等等都会用到.所 ...

  3. 来来来,告诉你一个简单易上手的KPI打分的方子

    ▋1/3 前言 每个企业都要定期为员工的工作来进行考核,有月度考核.季度考核和年度考核. 这次月度考核,我打算用一种新的方式来执行. 我在我们研发小组内曾分享过能力-意愿四象限图.根据岗位技术能力和工 ...

  4. 从iMessage到微信,QQ离线短信服务,米聊,易信

    把iMessage.米聊.QQ离线短信服务.微信.易信放到一下,毫无疑问大家能够看出他们的共同点,iMessage与米聊我们就不用说了,有雷布斯的存在就有米聊的存在,QQ离线短信服务是提供给QQ会员的 ...

  5. .net core实践系列之短信服务-架构优化

    前言 通过前面的几篇文章,讲解了一个短信服务的架构设计与实现.然而初始方案并非100%完美的,我们仍可以对该架构做一些优化与调整. 同时我也希望通过这篇文章与大家分享一下,我的架构设计理念. 源码地址 ...

  6. .net core实践系列之短信服务-架构设计

    前言 上篇<.net core实践系列之短信服务-为什么选择.net core(开篇)>简单的介绍了(水了一篇).net core.这次针对短信服务的架构设计和技术栈的简析. 源码地址:h ...

  7. .net core实践系列之短信服务-Sikiro.SMS.Api服务的实现

    前言 上篇<.net core实践系列之短信服务-架构设计>介绍了我对短信服务的架构设计,同时针对场景解析了我的设计理念.本篇继续讲解Api服务的实现过程. 源码地址:https://gi ...

  8. 阿里云短信服务(JAVA)

    一,前言 ​ 短信验证码想必大家都不陌生,在很多网站,APP中都有使用到.比如登录,注册,身份校验等场景.不过通常情况下,短信服务都是外包给第三方公司的,接下来向大家分享如何使用阿里的短信服务. 二, ...

  9. 通过Dapr实现一个简单的基于.net的微服务电商系统(十)——一步一步教你如何撸Dapr之绑定

    如果说Actor是dapr有状态服务的内部体现的话,那绑定应该是dapr对serverless这部分的体现了.我们可以通过绑定极大的扩展应用的能力,甚至未来会成为serverless的基础.最开始接触 ...

随机推荐

  1. [转帖]Cacls和ICacls

    Cacls和ICacls https://www.cnblogs.com/Aley/p/11089538.html Need Study 解释:  Cacls:显示或修改文件的访问控制列表(ACL) ...

  2. K8S从入门到放弃系列-(6)kubernetes集群之kube-controller-manager部署

    摘要: 1.Kubernetes控制器管理器是一个守护进程它通过apiserver监视集群的共享状态,并进行更改以尝试将当前状态移向所需状态. 2.kube-controller-manager是有状 ...

  3. C++Primer 5th Chap6 Functions

    局部静态变量,关键字static修饰,即使函数结束执行也不受影响,生存期直到程序终止. java中static的单一存储空间的概念与其或有异曲同工之妙. 函数的形参可以无名,但有名可以使其意义更加清晰 ...

  4. jacascript Math (算数)对象

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 实际应用中用的比较多的有:round(); random(); floor(); ceil(); 其次还有 ...

  5. (二)shiro之jsp标签

    一.介绍 <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> Guest ...

  6. zookeeper安装和使用 windows环境

    简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...

  7. metronic-v4.6 使用经验

    1.弹框居中显示 上下居中 需要上下居中引用  bootstrap-modalmanager.js 左右居中 修改 bootstrap-modal.js 中 this.$element.css('ma ...

  8. JS使用MD5加密

    MD5加密JS代码 /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algor ...

  9. CentOS 系统下使用 yum 安装 Redis

    本文主要介绍在 CentOS 7 系统下使用 yum 安装 Redis 的过程. 更改 yum 源 将 Centos 的 yum 源更换为国内的阿里云源. 首先备份你的原镜像文件,保证出错后可以恢复: ...

  10. Java 之 LinkedMap 集合

    LinkedHashMap 概述 java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合 LinkedHashMap的特点: ...