日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

使用工廠類實現阿里云、騰訊云及華為云發送短信功能

來源: 責編: 時間:2023-11-06 17:19:24 263觀看
導讀在Spring Boot中,可以使用工廠類來實現阿里云、騰訊云和華為云的短信發送功能。首先,需要創建一個接口,定義發送短信的通用方法,然后為每個云服務提供具體的實現,最后創建一個工廠類來根據配置選擇正確的實現。以下是一個

在Spring Boot中,可以使用工廠類來實現阿里云、騰訊云和華為云的短信發送功能。首先,需要創建一個接口,定義發送短信的通用方法,然后為每個云服務提供具體的實現,最后創建一個工廠類來根據配置選擇正確的實現。以下是一個簡單的示例:Lxw28資訊網——每日最新資訊28at.com

創建一個通用的短信發送接口:Lxw28資訊網——每日最新資訊28at.com

public interface SmsSender {    void sendSms(String phoneNumber, String message);}

創建具體的短信發送服務實現類,分別為阿里云、騰訊云和華為云創建實現類。例如,以下是阿里云的實現:Lxw28資訊網——每日最新資訊28at.com

@Servicepublic class AliyunSmsSender implements SmsSender {    private final String accessKeyId;    private final String accessKeySecret;    private final String signName;    @Autowired    public AliyunSmsSender(        @Value("${sms.aliyun.accessKeyId}") String accessKeyId,        @Value("${sms.aliyun.accessKeySecret}") String accessKeySecret,        @Value("${sms.aliyun.signName}") String signName    ) {        this.accessKeyId = accessKeyId;        this.accessKeySecret = accessKeySecret;        this.signName = signName;    }    @Override    public void sendSms(String phoneNumber, String message) {        // 使用阿里云的SDK發送短信        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);        IAcsClient client = new DefaultAcsClient(profile);        CommonRequest request = new CommonRequest();        request.setMethod(MethodType.POST);        request.setDomain("dysmsapi.aliyuncs.com");        request.setVersion("2017-05-25");        request.setAction("SendSms");        // 設置短信發送參數        request.putQueryParameter("PhoneNumbers", phoneNumber);        request.putQueryParameter("SignName", signName);        request.putQueryParameter("TemplateCode", "your_template_code");        request.putQueryParameter("TemplateParam", "{/"code/":/"" + message + "/"}");        try {            CommonResponse response = client.getCommonResponse(request);            System.out.println(response.getData());        } catch (ServerException e) {            e.printStackTrace();        } catch (ClientException e) {            e.printStackTrace();        }    }}

騰訊云的實現類Lxw28資訊網——每日最新資訊28at.com

@Servicepublic class TencentSmsSender implements SmsSender {    private final String appId;    private final String appKey;    private final String sign;    @Autowired    public TencentSmsSender(        @Value("${sms.tencent.appId}") String appId,        @Value("${sms.tencent.appKey}") String appKey,        @Value("${sms.tencent.sign}") String sign    ) {        this.appId = appId;        this.appKey = appKey;        this.sign = sign;    }    @Override    public void sendSms(String phoneNumber, String message) {        // 使用騰訊云的SDK發送短信        // 實現具體的發送邏輯,參考騰訊云短信SDK文檔    }}

華為云的實現類Lxw28資訊網——每日最新資訊28at.com

@Servicepublic class HuaweiSmsSender implements SmsSender {    private final String clientId;    private final String clientSecret;    private final String sender;    @Autowired    public HuaweiSmsSender(        @Value("${sms.huawei.clientId}") String clientId,        @Value("${sms.huawei.clientSecret}") String clientSecret,        @Value("${sms.huawei.sender}") String sender    ) {        this.clientId = clientId;        this.clientSecret = clientSecret;        this.sender = sender;    }    @Override    public void sendSms(String phoneNumber, String message) {        // 使用華為云的SDK發送短信        // 實現具體的發送邏輯,參考華為云短信SDK文檔    }}

創建一個工廠類,根據配置選擇正確的短信發送實現類:Lxw28資訊網——每日最新資訊28at.com

@Servicepublic class SmsSenderFactory {    private final AliyunSmsSender aliyunSmsSender;    private final TencentSmsSender tencentSmsSender;    private final HuaweiSmsSender huaweiSmsSender;    @Autowired    public SmsSenderFactory(AliyunSmsSender aliyunSmsSender, TencentSmsSender tencentSmsSender, HuaweiSmsSender huaweiSmsSender) {        this.aliyunSmsSender = aliyunSmsSender;        this.tencentSmsSender = tencentSmsSender;        this.huaweiSmsSender = huaweiSmsSender;    }    public SmsSender getSmsSender(SmsProvider provider) {        switch (provider) {            case ALIYUN:                return aliyunSmsSender;            case TENCENT:                return tencentSmsSender;            case HUAWEI:                return huaweiSmsSender;            default:                throw new IllegalArgumentException("Unsupported SMS provider: " + provider);        }    }}

創建一個枚舉類來表示短信服務提供商:Lxw28資訊網——每日最新資訊28at.com

public enum SmsProvider {    ALIYUN,    TENCENT,    HUAWEI}

在Spring Boot應用中,配置并注入工廠類,根據配置選擇正確的短信服務提供商:Lxw28資訊網——每日最新資訊28at.com

# application.properties 中的配置sms.provider=ALIYUN

在服務或控制器中,可以注入SmsSenderFactory,然后根據配置選擇合適的短信服務提供商,并使用工廠創建短信發送實例進行發送:Lxw28資訊網——每日最新資訊28at.com

@Servicepublic class SmsService {    private final SmsSenderFactory smsSenderFactory;        @Value("${sms.provider}")    private SmsProvider smsProvider;    @Autowired    public SmsService(SmsSenderFactory smsSenderFactory) {        this.smsSenderFactory = smsSenderFactory;    }    public void sendSms(String phoneNumber, String message) {        SmsSender smsSender = smsSenderFactory.getSmsSender(smsProvider);        smsSender.sendSms(phoneNumber, message);    }}

這種方式使您能夠輕松切換不同的短信服務提供商,并根據配置選擇合適的實現類發送短信。請確保您已在項目中引入相應的云服務SDK,并配置好相關的參數,以便實際發送短信。Lxw28資訊網——每日最新資訊28at.com

示例中完整代碼,可以從下面網址獲取:Lxw28資訊網——每日最新資訊28at.com

https://gitee.com/jlearning/wechatdemo.gitLxw28資訊網——每日最新資訊28at.com

https://github.com/icoderoad/wxdemo.gitLxw28資訊網——每日最新資訊28at.com

Lxw28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-17262-0.html使用工廠類實現阿里云、騰訊云及華為云發送短信功能

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Gorm 中的遷移指南

下一篇: 使用Gorm進行高級查詢

標簽:
  • 熱門焦點
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 慕巖炮轟抖音,百合網今何在?

    來源:價值研究所 作者:Hernanderz“難道就因為自己的一個產品牛逼了,從客服到總裁,都不愿意正視自己產品和運營上的問題,選擇逃避了嗎?”這一番話,出自百合網聯合創
  • 騰訊蓋樓,字節拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之“想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!”曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當家”的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 余承東:AI大模型技術的發展將會帶來下一代智能終端操作系統的智慧體驗

    8月4日消息,2023年華為開發者大會(HDC.Together)今天正式開幕,華為發布HarmonyOS 4、全新升級的鴻蒙開發套件、HarmonyOS Next開發者預覽版本等一系列
  • OPPO K11搭載高性能石墨散熱系統:旗艦同款 性能涼爽釋放

    日前OPPO官方宣布,將于7月25日14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼
  • 質感不錯!OPPO K11渲染圖曝光:旗艦IMX890傳感器首次下放

    一直以來,OPPO K系列機型都保持著較為均衡的產品體驗,歷來都是2K價位的明星機型,去年推出的OPPO K10和OPPO K10 Pro兩款機型憑借各自的出色配置,堪稱有
  • SN570 NVMe SSD固態硬盤 價格與性能兼具

    SN570 NVMe SSD固態硬盤是西部數據發布的最新一代WD Blue系列的固態硬盤,不僅閃存技術更為精進,性能也得到了進一步的躍升。WD Blue SN570 NVMe SSD的包裝外
Top 主站蜘蛛池模板: 舟曲县| 石家庄市| 瑞昌市| 尤溪县| 东阳市| 比如县| 佳木斯市| 绥滨县| 滕州市| 尚义县| 柘城县| 石城县| 丰原市| 当涂县| 天门市| 化州市| 钟祥市| 鹿邑县| 监利县| 吴旗县| 若羌县| 财经| 莱西市| 大城县| 抚顺市| 崇文区| 肃宁县| 邓州市| 布拖县| 年辖:市辖区| 个旧市| 灵石县| 江达县| 永德县| 叙永县| 昌吉市| 克山县| 奉贤区| 永和县| 贡觉县| 拜城县|