资讯专栏INFORMATION COLUMN

一个简单易上手的短信服务Spring Boot Starter

NicolasHe / 1767人阅读

摘要:总结目前腾讯阿里和云之讯短信服务都进行了试验,希望各位小伙伴能合作完成验证,共同完善该,觉得有用请该项目。如果只想使用而腾讯云短信业务的话,按照使用即可。

前言

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

Spring Boot Starter

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

短信服务Starter

## 1. 开发工具及编译

</>复制代码

  1. IntelliJ IDEA 2018.2.5
    Maven 3.5
    JDK 1.8

    ## 2. 如何使用sms-spring-boot-starter
    ### (1). 在pom文件中引入

</>复制代码

  1. com.github.jackieonway.sms
  2. sms-spring-boot-starter
  3. 0.0.1-SNAPSHOT

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

</>复制代码

  1. mavenRepoCenter
  2. Maven Development Snapshot Repository
  3. https://oss.sonatype.org/content/repositories/snapshots
  4. false
  5. true
(2).在application.yml中加入

</>复制代码

  1. spring:
  2. jackieonway:
  3. sms:
  4. sms-type: tentcent # 短信服务商 暂目前只有 腾讯和阿里的短信服务,默认为ali
  5. security-key: your security-key # 短信的私钥
  6. appid: your appid # 短信的应用id
  7. sign: your sign # 短信的签名
(3). 在Springboot主程序中 加入

</>复制代码

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

可以采用排除相关依赖的方式注入Service

可以采用加 @Qualifier("tencentSmsService")的方式注入Service ,
value的可选值目前只有 tencentSmsService 和aliSmsService两种,

可以采用
@Autowired
private SmsService tencentSmsService;
注入,方式与方法2类似

采用方式1,最终的jar包将会比方式2和方法3小,但是最终只有一种短信模式
生效,即只能使用一个短信运营商的服务,方式2,3能快速切换短信运营商

</>复制代码

  1. @RestController
  2. public class HelloController {
  3. /**
  4. * 1. 可以采用排除相关依赖的方式注入Service
  5. * 2. 可以采用加 @Qualifier("tencentSmsService")的方式注入Service ,
  6. * value的可选值目前只有 tencentSmsService 和aliSmsService两种,
  7. * 3. 可以采用
  8. * @Autowired
  9. * private SmsService tencentSmsService;
  10. * 注入,方式与方法2类似
  11. * 采用方式1,最终的jar包将会比方式2和方法3小,但是最终只有一种短信模式
  12. * 生效,即只能使用一个短信运营商的服务,方式2,3能快速切换短信运营商
  13. */
  14. @Autowired
  15. private SmsService tencentSmsService;
  16. // @Autowired
  17. // private SmsService aliSmsService;
  18. @GetMapping("/tencent")
  19. public Object tencent() {
  20. // 具体配置请参照具体运营商
  21. // your template params
  22. String[] paramst = {"5678","5"};
  23. TencentSmsRequest tencentSmsRequest = new TencentSmsRequest();
  24. tencentSmsRequest.setPhoneNumber(new String[]{"your cellphone"});
  25. tencentSmsRequest.setParams(paramst);
  26. return tencentSmsService.sendTemplateSms("328921", tencentSmsRequest);
  27. }
  28. /* @GetMapping("/ali")
  29. public Object ali() {
  30. // 具体配置请参照具体运营商
  31. AliSmsRequest aliSmsRequest = new AliSmsRequest();
  32. aliSmsRequest.setOutId("420");
  33. aliSmsRequest.setPhoneNumbers(new String[]{"your cellphone"});
  34. aliSmsRequest.setTemplateParam("{"code":"asdsads"}");
  35. aliSmsRequest.setSignName("123");
  36. return aliSmsService.sendTemplateSms("328921",aliSmsRequest);
  37. }*/
  38. }
(5). 发送

访问 localhost:8080/tencent

3. SmsService接口

</>复制代码

  1. /**
  2. * 单个发送短信
  3. * @param params 根据对应的短信服务商所需信息填写
  4. */
  5. public Object sendSms(Integer type,Object params) throws SmsException;
  6. /**
  7. * 单个发送模板短信
  8. * @param tempalteId 短信模板id
  9. * @param params 根据对应的短信服务商所需信息填写
  10. */
  11. public Object sendTemplateSms(String tempalteId, Object params) throws SmsException;
  12. /**
  13. * 批量发送短信
  14. * @param params 根据对应的短信服务商所需信息填写
  15. */
  16. public Object sendBatchSms(int type,Object params) throws SmsException;
  17. /**
  18. * 批量发送模板短信
  19. * @param tempalteId 短信模板id
  20. * @param params 根据对应的短信服务商所需信息填写
  21. */
  22. public Object sendBatchTemplateSms(String tempalteId, Object params) throws SmsException;

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

总结

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

github地址:sms-spring-boot-project

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76101.html

相关文章

  • 一个简单易上手的短信服务Spring Boot Starter

    摘要:总结只是针对腾讯短信服务进行了试验,阿里的短信服务并未真正验证,希望各位小伙伴能合作完成验证,共同完善该,觉得有用请该项目。 前言短信服务在用户注册、登录、找回密码等相关操作中,可以让用户使用更加便捷,越来越多的公司都采用短信验证的方式让用户进行操作,从而提高用户的实用性。 Spring Boot Starter由于 Spring boot 的约定大于配置的理念,使得在使用Spring...

    187J3X1 评论0 收藏0
  • Spring Boot 2.x基础教程:快速入门

    摘要:编写一个接口创建命名为根据实际情况修改创建类,内容如下启动主程序,使用等工具发起请求,可以看到页面返回编写单元测试用例打开的下的测试入口类。 简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让你更易上手,更简单快捷地构建Spring应...

    tigerZH 评论0 收藏0
  • Spring Boot [配置-下篇]

    摘要:进行异常的捕捉与错误信息页面的定制。告诉,这是一个对象,该对象应该被注册为在应用程序上下文中的。不同框架的不同配置这里以作为演示默认情况下,保护已启用。你必须配置包含令牌的所有的网页来工作。该命名结构旨在帮你找到需要的。 导读: 在上篇文章中我们了解到Spring Boot 的一些常用的外部化配置,在本篇中我们将会继续对类的配置进行了解 一个简单的例子[错误页面定制]: 在 Spr...

    StonePanda 评论0 收藏0
  • [直播视频] 《Java 微服务实践 - Spring Boot 系列》限时折扣

    摘要:作为微服务的基础设施之一,背靠强大的生态社区,支撑技术体系。微服务实践为系列讲座,专题直播节,时长高达小时,包括目前最流行技术,深入源码分析,授人以渔的方式,帮助初学者深入浅出地掌握,为高阶从业人员抛砖引玉。 简介 目前业界最流行的微服务架构正在或者已被各种规模的互联网公司广泛接受和认可,业已成为互联网开发人员必备技术。无论是互联网、云计算还是大数据,Java平台已成为全栈的生态体系,...

    Enlightenment 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<