短信服務在用戶註冊、登陸、找回密碼等相關操做中,能夠讓用戶使用更加便捷,愈來愈多的公司都採用短信驗證的方式讓用戶進行操做,從而提升用戶的實用性。git
因爲 Spring boot 的約定大於配置的理念,使得在使用Spring變得更加方便。Spring Boot 項目組提供了不少Starter ,讓咱們在使用 Spring 的時候變得很是容易。對於官方提供的Starter 採用 spring-boot-starter-xxx開頭,對於非官方提供的Spring Boot Starter ,官方建議採用 xxxx-spring-boot-starter命名。github
## 1. 開發工具及編譯spring
IntelliJ IDEA 2018.2.5
Maven 3.5
JDK 1.8## 2. 如何使用sms-spring-boot-starter
### (1). 在pom文件中引入app
<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>
spring: jackieonway: sms: sms-type: tentcent # 短信服務商 暫目前只有 騰訊和阿里的短信服務,默認爲ali security-key: your security-key # 短信的私鑰 appid: your appid # 短信的應用id sign: your sign # 短信的簽名
@EnabledSmsAutoConfiguration
採用方式1,最終的jar包將會比方式2和方法3小,可是最終只有一種短信模式
生效,即只能使用一個短信運營商的服務,方式2,3能快速切換短信運營商maven
@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); }*/ }
訪問 localhost:8080/tencent
spring-boot
/** * 單個發送短信 * @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地址:sms-spring-boot-projecturl