最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成阿里云短信的實戰(zhàn)指南

 更新時間:2026年01月14日 09:10:58   作者:悟空碼字  
在SpringBoot項目中集成阿里云短信服務(wù),核心是完成一系列前置申請,并調(diào)用其官方SDK發(fā)送短信,下面小編就和大家詳細(xì)介紹一下具體的實現(xiàn)方法吧

在SpringBoot項目中集成阿里云短信服務(wù),核心是完成一系列前置申請,并調(diào)用其官方SDK發(fā)送短信。整個流程從前置準(zhǔn)備到代碼集成,步驟清晰。

阿里云短信服務(wù)概述

阿里云短信服務(wù)提供高并發(fā)、安全的全球短信發(fā)送能力,支持驗證碼、通知、營銷等場景。其主要特點如下:

特性維度具體說明
核心能力提供三網(wǎng)合一通道,秒級可達(dá),支持國內(nèi)及全球200多個國家/地區(qū)。
安全與管控基于阿里云賬戶與RAM權(quán)限管理,支持設(shè)置日發(fā)送量上限、單用戶頻次閾值,并具備驗證碼防盜刷監(jiān)控。
計費模式采用短信套餐包優(yōu)先抵扣,超出后按量計費的模式。國內(nèi)驗證碼/通知短信低至0.045元/條起。
使用限制僅支持企業(yè)認(rèn)證賬號;發(fā)送前需完成資質(zhì)、簽名、模板的申請與審核;對發(fā)送頻率有嚴(yán)格限制(例如驗證碼同一號碼最多1條/分鐘)。

集成前必須完成的控制臺配置

編寫代碼前,你必須在阿里云控制臺 完成一系列配置,這是短信發(fā)送的前提。

1.開通服務(wù)與購買資源包

  • 完成企業(yè)實名認(rèn)證并登錄短信服務(wù)控制臺開通服務(wù)。
  • 根據(jù)業(yè)務(wù)需要(國內(nèi)或國際)購買短信套餐包。

2.創(chuàng)建AccessKey

  • 為安全起見,建議為應(yīng)用創(chuàng)建RAM子用戶并授權(quán)AliyunDysmsFullAccess策略。
  • 為該子用戶創(chuàng)建AccessKey(AccessKey ID和AccessKey Secret),后續(xù)代碼將使用它調(diào)用API。切勿直接使用主賬號的AccessKey。

3.申請短信簽名與模板

  • 簽名:在“國內(nèi)消息”或“國際/港澳臺消息”菜單下申請。簽名是顯示在短信開頭的標(biāo)識,如【企業(yè)名稱】,用于標(biāo)識發(fā)送方。審核通常需2小時。
  • 模板:短信內(nèi)容模板,支持變量。例如驗證碼模板:“您的驗證碼為:$[code],5分鐘內(nèi)有效。”模板審核同樣約需2小時。
  • 重要提示:簽名和模板均審核通過后方可使用。國內(nèi)簽名還需完成運營商實名報備(需7-15個工作日),報備成功前發(fā)送可能失敗。

SpringBoot項目集成詳細(xì)步驟

完成控制臺配置后,即可在SpringBoot項目中集成。

第1步:添加Maven依賴 在項目的pom.xml中添加阿里云短信服務(wù)SDK的依賴。

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>dysmsapi20180501</artifactId>
    <version>2.0.24</version> <!-- 請使用Maven倉庫中的最新版本 -->
</dependency>

第2步:配置應(yīng)用參數(shù)application.ymlapplication.properties中配置必要的參數(shù)。

# application.yml 配置示例
aliyun:
  sms:
    # 從控制臺獲取的AccessKey信息
    access-key-id: your-access-key-id
    access-key-secret: your-access-key-secret
    # 短信服務(wù)接入點(Endpoint),國內(nèi)一般為 dysmsapi.aliyuncs.com
    endpoint: dysmsapi.aliyuncs.com
    # 控制臺申請并通過審核的簽名名稱(無需加【】)
    sign-name: 你的簽名
    # 控制臺申請并通過審核的模板CODE
    template-code: SMS_123456789

第3步:創(chuàng)建配置類與Service 創(chuàng)建一個配置類來初始化SDK客戶端,并編寫發(fā)送短信的服務(wù)類。

import com.aliyun.dysmsapi20180501.Client;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;

@Configuration
public class AliyunSmsConfig {

    @Value("${aliyun.sms.access-key-id}")
    private String accessKeyId;

    @Value("${aliyun.sms.access-key-secret}")
    private String accessKeySecret;

    @Value("${aliyun.sms.endpoint}")
    private String endpoint;

    /**
     * 創(chuàng)建并返回阿里云短信服務(wù)的Client實例。
     * 該Bean可用于整個Spring容器。
     */
    @Bean
    public Client createClient() throws Exception {
        Config config = new Config()
                .setAccessKeyId(accessKeyId)
                .setAccessKeySecret(accessKeySecret);
        config.endpoint = endpoint;
        return new Client(config);
    }
}
import com.aliyun.dysmsapi20180501.Client;
import com.aliyun.dysmsapi20180501.models.SendMessageWithTemplateRequest;
import com.aliyun.dysmsapi20180501.models.SendMessageWithTemplateResponse;
import com.aliyun.teautil.models.RuntimeOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service
public class SmsService {

    @Autowired
    private Client smsClient;

    @Value("${aliyun.sms.sign-name}")
    private String signName;

    @Value("${aliyun.sms.template-code}")
    private String templateCode;

    /**
     * 發(fā)送短信驗證碼
     * @param phoneNumber 目標(biāo)手機號(國內(nèi)號碼需帶國際區(qū)號86)
     * @param templateParam 模板變量對應(yīng)的JSON字符串,如:{"code":"123456"}
     * @return 是否發(fā)送成功
     */
    public boolean sendSms(String phoneNumber, String templateParam) {
        try {
            SendMessageWithTemplateRequest request = new SendMessageWithTemplateRequest()
                    .setTo(phoneNumber) // 接收方手機號
                    .setSignName(signName) // 短信簽名
                    .setTemplateCode(templateCode) // 短信模板CODE
                    .setTemplateParam(templateParam); // 模板變量JSON

            RuntimeOptions runtime = new RuntimeOptions();
            SendMessageWithTemplateResponse response = smsClient.sendMessageWithTemplateWithOptions(request, runtime);

            // 根據(jù)響應(yīng)判斷是否成功,"OK"表示成功[citation:4]
            return "OK".equals(response.getBody().getResponseCode());
        } catch (Exception e) {
            // 此處應(yīng)記錄日志,并根據(jù)業(yè)務(wù)需要進(jìn)行異常處理
            e.printStackTrace();
            return false;
        }
    }
}

第4步:在Controller中調(diào)用 創(chuàng)建一個簡單的控制器來提供發(fā)送短信的HTTP接口。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SmsController {

    @Autowired
    private SmsService smsService;

    @GetMapping("/sendCode")
    public String sendVerificationCode(@RequestParam String phone) {
        // 生成隨機驗證碼(示例)
        String code = String.valueOf((int)((Math.random() * 9 + 1) * 100000));
        // 構(gòu)造模板參數(shù)(必須與申請模板時的變量名一致)
        String templateParam = "{\"code\":\"" + code + "\"}";

        boolean isSuccess = smsService.sendSms(phone, templateParam);
        if (isSuccess) {
            // 在實際業(yè)務(wù)中,此處應(yīng)將驗證碼與手機號關(guān)聯(lián)并存入緩存(如Redis),設(shè)置有效期
            return "驗證碼發(fā)送成功!";
        } else {
            return "驗證碼發(fā)送失敗,請稍后重試。";
        }
    }
}

總結(jié)

按照上述步驟,即可在SpringBoot項目中集成阿里云短信。最后,有幾個關(guān)鍵點需要注意:

  • 資質(zhì)與審核是關(guān)鍵前提:務(wù)必確保使用企業(yè)認(rèn)證賬號,并提前完成簽名、模板的申請和審核。國內(nèi)簽名還需要等待運營商報備成功,否則發(fā)送會失敗。
  • 安全第一:AccessKey相當(dāng)于賬號密碼,務(wù)必通過環(huán)境變量或配置服務(wù)器管理,切忌硬編碼在代碼中提交至版本庫。
  • 關(guān)注限制與成本:嚴(yán)格遵守發(fā)送頻率限制(如1條/分鐘/號)。發(fā)送測試短信也會產(chǎn)生費用,請注意賬戶余額。
  • 生產(chǎn)環(huán)境建議:應(yīng)考慮異步發(fā)送、失敗重試、發(fā)送狀態(tài)回執(zhí)(SmsReport)接收等機制以提升穩(wěn)定性和可靠性。

到此這篇關(guān)于SpringBoot集成阿里云短信的實戰(zhàn)指南的文章就介紹到這了,更多相關(guān)SpringBoot集成阿里云短信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Java在Excel中創(chuàng)建數(shù)據(jù)透視表

    使用Java在Excel中創(chuàng)建數(shù)據(jù)透視表

    在處理銷售數(shù)據(jù)、財務(wù)報表或運營指標(biāo)時,數(shù)據(jù)透視表是快速匯總和分析大量數(shù)據(jù)的強大工具,通過 Java 自動化這個過程可以實現(xiàn)定期報告的自動生成,大幅提高工作效率,本文將詳細(xì)介紹如何使用 Java 在 Excel 工作簿中創(chuàng)建數(shù)據(jù)透視表,需要的朋友可以參考下
    2026-03-03
  • idea沒法識別springboot項目的原因解決及辦法

    idea沒法識別springboot項目的原因解決及辦法

    IDEA無法識別Spring Boot項目可能是由于Lombok依賴未正確解析所致,原pom.xml中未指定Lombok版本號,導(dǎo)致依賴下載失敗,下面就來詳細(xì)的介紹一下解決方法,感興趣的可以了解一下
    2025-09-09
  • JavaMail發(fā)送(帶圖片和附件)和接收郵件實現(xiàn)詳解(四)

    JavaMail發(fā)送(帶圖片和附件)和接收郵件實現(xiàn)詳解(四)

    這篇文章主要為大家詳細(xì)介紹了JavaMail帶圖片和附件的發(fā)送和接收郵件實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 基于IDEA的Maven工程創(chuàng)建方式

    基于IDEA的Maven工程創(chuàng)建方式

    文章介紹了Maven工程的GAVP屬性(GroupId、ArtifactId、Version、Packaging)及其格式規(guī)范,說明了Idea構(gòu)建JavaSE/JavaEE工程的方法,并概述了Maven標(biāo)準(zhǔn)項目結(jié)構(gòu)的作用與目錄劃分
    2025-07-07
  • 在Java編程中使用正則表達(dá)式

    在Java編程中使用正則表達(dá)式

    這篇文章主要介紹了在Java編程中使用正則表達(dá)式,注意使用matches()方法檢測一下Java對正則表達(dá)式的支持情況,需要的朋友可以參考下
    2015-08-08
  • springboot整合Mybatis-plus的實現(xiàn)

    springboot整合Mybatis-plus的實現(xiàn)

    這篇文章主要介紹了springboot整合Mybatis-plus的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java中Parser的用法

    Java中Parser的用法

    這篇文章主要介紹了Java?Parser使用指南,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 深入理解java代碼實現(xiàn)分治算法

    深入理解java代碼實現(xiàn)分治算法

    分治算法是一種遞歸算法,它將問題劃分為幾個獨立的子問題,然后遞歸地解決這些子問題,最后將子問題的解合并起來得到原問題的解,本文詳細(xì)的介紹java分治算法,感興趣的可以了解一下
    2023-09-09
  • Java?pdf文件書簽承前縮放驗證的設(shè)置方法

    Java?pdf文件書簽承前縮放驗證的設(shè)置方法

    很多朋友不知道是什么是書簽承前縮放,簡單說就是可以任意改變當(dāng)前pdf文檔縮放比例,點擊書簽后不影響其縮放比率,本文給大家介紹下Java?pdf文件書簽承前縮放驗證的設(shè)置方法,感興趣的朋友一起看看吧
    2022-02-02
  • Java邏輯運算符短路求值的優(yōu)雅實踐指南

    Java邏輯運算符短路求值的優(yōu)雅實踐指南

    本文探討了Java邏輯運算符短路求值(Short-circuit?Evaluation)的巧妙應(yīng)用,通過一個用戶日志清理場景,展示了如何利用&&運算符的特性優(yōu)化代碼,希望對大家有所幫助
    2026-05-05

最新評論

松原市| 大邑县| 错那县| 大竹县| 大连市| 涪陵区| 毕节市| 惠水县| 翁牛特旗| 沐川县| 华宁县| 耿马| 沈阳市| 巨野县| 邯郸县| 时尚| 陇西县| 青神县| 江达县| 泸西县| 定西市| 额济纳旗| 贺兰县| 吕梁市| 德州市| 兴海县| 钟山县| 汝南县| 阿拉尔市| 班戈县| 右玉县| 萝北县| 尉氏县| 利辛县| 霍邱县| 黎平县| 尤溪县| 云梦县| 廊坊市| 四川省| 库伦旗|