国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

網(wǎng)上關(guān)于實(shí)操性的文章普遍大部分都記錄不全,要么只記錄重點(diǎn)部分,對(duì)于剛學(xué)習(xí)的小伙伴來說看起來是比較困難的

所以,基于這一點(diǎn)。

該文章會(huì)詳細(xì)介紹使用SpringBoot整合阿里云短信服務(wù)的每一步過程,同時(shí)會(huì)將驗(yàn)證碼存放到Redis中并設(shè)置過期時(shí)間,盡量保證實(shí)戰(zhàn)的同時(shí)也讓沒做過的同學(xué)也能實(shí)現(xiàn)發(fā)短信的功能~


關(guān)于阿里云短信服務(wù)介紹就不多說了,我們只要知道他能夠幫我們實(shí)現(xiàn)短信發(fā)送就夠了,直接上步驟~

1、開通阿里云短信服務(wù)

1、去到阿里云官方網(wǎng)址:https://www.aliyun.com/ 選擇短信服務(wù)
SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))
2、點(diǎn)擊開通即可
SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))
3、開通好后這里是需要申請(qǐng):自己的模板和簽名的,但現(xiàn)在申請(qǐng)的話需要有自己的域名和網(wǎng)站,對(duì)于剛學(xué)習(xí)的同學(xué)來說這些肯定是沒有的,但好在阿里云也考慮到了這個(gè)問題,就給我們提供了一個(gè)專門測(cè)試的簽名和模板

4、找到測(cè)試的簽名和模板,開通短信服務(wù)成功之后,會(huì)進(jìn)入到該頁面,我們點(diǎn)擊快速學(xué)習(xí),再往下滑,找到調(diào)用API發(fā)短信。
SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))
找不到的小伙伴可以直接點(diǎn)擊這個(gè)鏈接:阿里云短信服務(wù)測(cè)試的簽名和模板地址

到了這里,阿里云短信服務(wù)基本就搞定了,接下來我們整合到項(xiàng)目中。(對(duì)了,記得充點(diǎn)錢在里面,不然發(fā)送不了哦,幾毛就夠了,一條短信0.045)

2、整合短信服務(wù)到項(xiàng)目中

1、創(chuàng)建一個(gè)SpringBoot項(xiàng)目
SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))
2、導(dǎo)入依賴(為了讓大家看的更清楚,我這里就寫完整依賴了)

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.28</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.3.3</version>
        </dependency>

        <!-- redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <!-- spring2.X集成redis所需common-pool2-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.6.0</version>
        </dependency>

        <!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <!--swagger ui-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>
    </dependencies>
注意:記得將SpringBoot版本修改為2.2.1.RELEASE(因?yàn)楦甙姹镜挠锌赡懿黄ヅ洌?

SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))

3、配合application.properties文件

# 服務(wù)端口
server.port=8100

#Redis配置 這里填寫的是裝了redis的ip地址,我的redis裝在虛擬機(jī)中
spring.redis.host=192.168.1.8
spring.redis.port=6379
spring.redis.database= 0
spring.redis.timeout=1800000

spring.redis.lettuce.pool.max-active=20
spring.redis.lettuce.pool.max-wait=-1
#最大阻塞等待時(shí)間(負(fù)數(shù)表示沒限制)
spring.redis.lettuce.pool.max-idle=5
spring.redis.lettuce.pool.min-idle=0
#最小空閑


4、在啟動(dòng)類上加上對(duì)應(yīng)注解

@EnableSwagger2
@ComponentScan({"com.gx"})
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消數(shù)據(jù)源自動(dòng)配置
public class BootMsmApplication {
    public static void main(String[] args) {
        SpringApplication.run(BootMsmApplication.class, args);
    }
}

5、創(chuàng)建service,編寫業(yè)務(wù)
(1)接口

/**
 * @author Eric
 * @create 2022-05-22 15:08
 */
public interface MsmService {
    //發(fā)送驗(yàn)證碼
    boolean send(Map<String, Object> param, String phone);
}

(2)實(shí)現(xiàn)類

package com.gx.bootmsm.service;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.Map;

/**
 * @author Eric
 * @create  2022-05-22 15:09
 */
@Service
public class MsmServiceImpl implements MsmService{
    /**
     * 發(fā)送驗(yàn)證碼
     * @param param     驗(yàn)證碼
     * @param phone     手機(jī)號(hào)
     * @return
     */
    @Override
    public boolean send(Map<String, Object> param, String phone) {

        if(StringUtils.isEmpty(phone)) return false;

        //default 地域節(jié)點(diǎn),默認(rèn)就好  后面是 阿里云的 id和秘鑰(這里記得去阿里云復(fù)制自己的id和秘鑰哦)
        DefaultProfile profile = DefaultProfile.getProfile("default", "Q2AtKVxX1N3tOh3AWHHzXyx", "ZgmmX3vSlMF9GnxliXZrLxoD7053Hx");
        IAcsClient client = new DefaultAcsClient(profile);

        //這里不能修改
        CommonRequest request = new CommonRequest();
        //request.setProtocol(ProtocolType.HTTPS);
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");

        request.putQueryParameter("PhoneNumbers", phone);                    //手機(jī)號(hào)
        request.putQueryParameter("SignName", "阿里云短信測(cè)試");    //申請(qǐng)阿里云 簽名名稱(暫時(shí)用阿里云測(cè)試的,自己還不能注冊(cè)簽名)
        request.putQueryParameter("TemplateCode", "SMS_154950909"); //申請(qǐng)阿里云 模板code(用的也是阿里云測(cè)試的)
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));

        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
            return response.getHttpResponse().isSuccess();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}

6、創(chuàng)建一個(gè)生成隨機(jī)驗(yàn)證碼的工具類:RandomUtil

package com.gx.bootmsm.utils;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;

/**
 * 獲取隨機(jī)數(shù)
 *
 * @author qianyi
 *
 */
public class RandomUtil {

	private static final Random random = new Random();

	private static final DecimalFormat fourdf = new DecimalFormat("0000");

	private static final DecimalFormat sixdf = new DecimalFormat("000000");

	public static String getFourBitRandom() {
		return fourdf.format(random.nextInt(10000));
	}

	public static String getSixBitRandom() {
		return sixdf.format(random.nextInt(1000000));
	}

	/**
	 * 給定數(shù)組,抽取n個(gè)數(shù)據(jù)
	 * @param list
	 * @param n
	 * @return
	 */
	public static ArrayList getRandom(List list, int n) {

		Random random = new Random();

		HashMap<Object, Object> hashMap = new HashMap<Object, Object>();

		// 生成隨機(jī)數(shù)字并存入HashMap
		for (int i = 0; i < list.size(); i++) {

			int number = random.nextInt(100) + 1;

			hashMap.put(number, i);
		}

		// 從HashMap導(dǎo)入數(shù)組
		Object[] robjs = hashMap.values().toArray();

		ArrayList r = new ArrayList();

		// 遍歷數(shù)組并打印數(shù)據(jù)
		for (int i = 0; i < n; i++) {
			r.add(list.get((int) robjs[i]));
			System.out.print(list.get((int) robjs[i]) + "\t");
		}
		System.out.print("\n");
		return r;
	}
}

7、創(chuàng)建controller

package com.gx.bootmsm.controller;

import com.gx.bootmsm.service.MsmService;
import com.gx.bootmsm.utils.RandomUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @author Eric
 * @create  2022-05-22 15:12
 */
@Api(tags = "阿里云短信服務(wù)")
@RestController
@RequestMapping("/api/msm")
public class MsmApiController {
    @Autowired
    private MsmService msmService;

    @Autowired
    private RedisTemplate<String, String> redisTemplate;    //注入redis

    //發(fā)送短信驗(yàn)證碼
    @ApiOperation(value = "發(fā)送短信驗(yàn)證碼")
    @GetMapping(value = "/send/{phone}")
    public Boolean code(@PathVariable String phone) {
        //1、從redis中獲取驗(yàn)證碼,如果獲取到就直接返回
        String code = redisTemplate.opsForValue().get(phone);
        if(!StringUtils.isEmpty(code)) return false;

        //2、如果獲取不到,就進(jìn)行阿里云發(fā)送
        code = RandomUtil.getFourBitRandom();//生成驗(yàn)證碼的隨機(jī)值
        Map<String,Object> param = new HashMap<>();
        param.put("code", code);

        //調(diào)用方法
        boolean isSend = msmService.send(param,phone);
        if(isSend) {
            //往redis中設(shè)置數(shù)據(jù):key、value、過期值、過期時(shí)間單位  MINUTES代表分鐘
            redisTemplate.opsForValue().set(phone, code,5, TimeUnit.MINUTES);
            return true;
        } else {
            return false;
        }
    }
}

3、測(cè)試

1、啟動(dòng)項(xiàng)目
2、訪問swagger地址:http://localhost:8100/swagger-ui.html
3、輸入手機(jī)號(hào),點(diǎn)擊發(fā)送
SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))
返回結(jié)果為true,說明發(fā)送成功
SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))
這是手機(jī)收到的短信
SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))
因?yàn)槲覀冇玫氖前⒗镌频哪0?,所以模板顯示我們也就不能自定義啦~

然后我們也用到了redis,設(shè)置了驗(yàn)證碼的過期時(shí)間,我們可以去到redis中查看是否有值
SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))
可以看到已經(jīng)存放進(jìn)來了~


總結(jié)

該文章應(yīng)該是每一步都有記錄,也是幫自己回憶一下這個(gè)過程,當(dāng)然,如果對(duì)你也有幫助,那也是我的榮幸~ ,如果在過程中有遇到問題,可在下方留言,作者看到會(huì)在第一時(shí)間回復(fù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-414180.html

到了這里,關(guān)于SpringBoot整合阿里云短信服務(wù)詳細(xì)過程(保證初學(xué)者也能實(shí)現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 阿里云短信服務(wù)不對(duì)個(gè)人開放?如何在阿里云市場(chǎng)免費(fèi)購買短信服務(wù)?云市場(chǎng)購買到的短信服務(wù)如何使用?(以谷粒學(xué)院項(xiàng)目為例)

    阿里云短信服務(wù)不對(duì)個(gè)人開放?如何在阿里云市場(chǎng)免費(fèi)購買短信服務(wù)?云市場(chǎng)購買到的短信服務(wù)如何使用?(以谷粒學(xué)院項(xiàng)目為例)

    問題描述 : 在做谷粒學(xué)院項(xiàng)目時(shí),需要使用阿里云的短信服務(wù)用于注冊(cè)驗(yàn)證,但是阿里云的短信服務(wù)目前不對(duì)個(gè)人開放了,看到彈幕說可以在云市場(chǎng)購買,于是果斷嘗試了一把,這過程中又遇到頭疼的依賴版本兼容問題,好在最終解決并測(cè)試成功了。在此把詳細(xì)的操作流程

    2024年02月12日
    瀏覽(23)
  • 阿里云短信服務(wù)開通(只限于測(cè)試,國內(nèi)短信)

    阿里云短信服務(wù)開通(只限于測(cè)試,國內(nèi)短信)

    前提: 需要有阿里云的密鑰–》AccessKey ID 和 AccessKey Secret 是您訪問阿里云 API 的密鑰,具有該賬戶完全的權(quán)限 第一步:搜索阿里云短信產(chǎn)品 第2步:點(diǎn)擊免費(fèi)開通 第3步:開通國內(nèi)信息 第4步:申請(qǐng)簽名 第5步:申請(qǐng)模板 第6步:參考阿里云接口調(diào)用文檔,實(shí)現(xiàn)對(duì)短信服務(wù)接口

    2024年02月16日
    瀏覽(51)
  • 阿里云短信服務(wù)開通

    阿里云短信服務(wù)開通

    https://dysms.console.aliyun.com/overview 登錄訪問阿里云短信服務(wù),可以看到大致的操作步驟: 1.申請(qǐng)簽名,如:【阿里云短信】 2.申請(qǐng)模板,如:【阿里云通信】您正在使用阿里云短信測(cè)試服務(wù),體驗(yàn)驗(yàn)證碼是:8888,如非本人操作,請(qǐng)忽略本短信! 3.系統(tǒng)設(shè)置,狀態(tài)報(bào)告,審核通知

    2024年02月02日
    瀏覽(23)
  • 開通阿里云短信服務(wù)

    開通阿里云短信服務(wù)

    1.1、找到后臺(tái)放在個(gè)人頭像上面 選擇 AccessKey 管理 1.2、選擇 子用戶 1.3、創(chuàng)建用戶組 1.4、給用戶組添加權(quán)限 然后就可以看到你的權(quán)限里面多了一個(gè)sms的短信權(quán)限 1.5、創(chuàng)建用戶 注意!注意!注意點(diǎn)擊確認(rèn)后只可以看到一次密碼返回就看不到了 注意!注意!注意點(diǎn)擊確認(rèn)后只

    2023年04月08日
    瀏覽(15)
  • 認(rèn)證服務(wù):整合短信驗(yàn)證碼

    認(rèn)證服務(wù):整合短信驗(yàn)證碼

    前提提示 視頻對(duì)應(yīng)的阿里云短信服務(wù)需要企業(yè)驗(yàn)證,下面換一種阿里云的產(chǎn)品也是大同小異的 【三網(wǎng)106短信】短信接口-短信驗(yàn)證碼-短信通知-會(huì)員短信群發(fā)-短信平臺(tái)API接口-行業(yè)短信_(tái)支持?jǐn)y號(hào)轉(zhuǎn)網(wǎng)_自定義簽名和模板【最新版】_實(shí)名認(rèn)證接口/API_身份證接口/API_銀行卡認(rèn)證-云

    2023年04月09日
    瀏覽(23)
  • 阿里云開通短信服務(wù)流程

    阿里云開通短信服務(wù)流程

    友情提示 : 本人不是專業(yè)的技術(shù)人員,很多步驟都是我參考了很多博客,文檔,自己摸索出來的,不保證各位的操作都能百分百正確,以及出現(xiàn)的各種問題。 我寫這篇博客只是為兄弟們提供一種解決方法,以及一些思路… 操作流程會(huì)有一些麻煩,如果嫌麻煩的建議 右上角

    2024年02月02日
    瀏覽(21)
  • 阿里云短信服務(wù)實(shí)戰(zhàn)教程

    阿里云短信服務(wù)實(shí)戰(zhàn)教程

    ??短信服務(wù)有很多的使用場(chǎng)景,比如注冊(cè)獲取驗(yàn)證碼,購票成功發(fā)送購票通知。目前很多頭部運(yùn)營商已經(jīng)提供了相關(guān)服務(wù),比如阿里云,騰訊云等,這里以阿里云短信服務(wù)為例。 ??阿里云的短信服務(wù)是需要購買的,并且每條短信是計(jì)費(fèi)的這個(gè)可以在阿里云看到,都有詳細(xì)

    2024年02月11日
    瀏覽(26)
  • Sms多平臺(tái)短信服務(wù)商系統(tǒng)~完成阿里云短信服務(wù)發(fā)送可自行配置

    Sms多平臺(tái)短信服務(wù)商系統(tǒng)~完成阿里云短信服務(wù)發(fā)送可自行配置

    阿里云地址 不同編程語言都有對(duì)應(yīng)的SDK,你們下載自己需要的即可。 pom.xml中添加maven坐標(biāo) 接下來的代碼不是單純的使用短信服務(wù)商提供的發(fā)送代碼來完成短信的發(fā)送那樣子就太簡(jiǎn)單了,我想你們也不想看這樣的文章了CSDN一抓一大把,或者看官方文檔即可。為了通用短信服務(wù)

    2024年02月09日
    瀏覽(24)
  • 阿里云短信服務(wù)---測(cè)試模板實(shí)現(xiàn)

    阿里云短信服務(wù)---測(cè)試模板實(shí)現(xiàn)

    2023年阿里云短信服務(wù) 個(gè)人申請(qǐng)模板 已經(jīng)申請(qǐng)不到了,現(xiàn)在使用 測(cè)試模板 實(shí)現(xiàn) 發(fā)送短信功能 但你手機(jī)上接收到的是模板字符串,具體驗(yàn)證碼可以自行存到Redis或者輸出到控制臺(tái) 步驟: 平臺(tái)鏈接: https://dysms.console.aliyun.com/quickstart 依次點(diǎn)擊下面圖片的提示 設(shè)置測(cè)試模板參數(shù)

    2024年02月14日
    瀏覽(28)
  • 阿里云——OpenAPI使用——短信服務(wù)

    阿里云——OpenAPI使用——短信服務(wù)

    目錄 前言 產(chǎn)品位置 短信服務(wù) API發(fā)送測(cè)試 控制臺(tái)發(fā)送測(cè)試 鏈接地址: 阿里云 OpenAPI 開發(fā)者門戶 公司一直沒用這個(gè),最近搞Eolink的時(shí)候看到OpenAPI,為了測(cè)試,我就搞一下阿里的試試,操作過程還是挺方便的,變相的產(chǎn)品華為、騰訊都有,阿里的操作的流暢度最高。步驟最簡(jiǎn)

    2023年04月20日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包