当前位置:首页 > 科技  > 软件

使用工厂类实现阿里云、腾讯云及华为云发送短信功能

来源: 责编: 时间:2023-11-06 17:19:24 385观看
导读在Spring Boot中,可以使用工厂类来实现阿里云、腾讯云和华为云的短信发送功能。首先,需要创建一个接口,定义发送短信的通用方法,然后为每个云服务提供具体的实现,最后创建一个工厂类来根据配置选择正确的实现。以下是一个

在Spring Boot中,可以使用工厂类来实现阿里云、腾讯云和华为云的短信发送功能。首先,需要创建一个接口,定义发送短信的通用方法,然后为每个云服务提供具体的实现,最后创建一个工厂类来根据配置选择正确的实现。以下是一个简单的示例:jgE28资讯网——每日最新资讯28at.com

创建一个通用的短信发送接口:jgE28资讯网——每日最新资讯28at.com

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

创建具体的短信发送服务实现类,分别为阿里云、腾讯云和华为云创建实现类。例如,以下是阿里云的实现:jgE28资讯网——每日最新资讯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();        }    }}

腾讯云的实现类jgE28资讯网——每日最新资讯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文档    }}

华为云的实现类jgE28资讯网——每日最新资讯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文档    }}

创建一个工厂类,根据配置选择正确的短信发送实现类:jgE28资讯网——每日最新资讯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);        }    }}

创建一个枚举类来表示短信服务提供商:jgE28资讯网——每日最新资讯28at.com

public enum SmsProvider {    ALIYUN,    TENCENT,    HUAWEI}

在Spring Boot应用中,配置并注入工厂类,根据配置选择正确的短信服务提供商:jgE28资讯网——每日最新资讯28at.com

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

在服务或控制器中,可以注入SmsSenderFactory,然后根据配置选择合适的短信服务提供商,并使用工厂创建短信发送实例进行发送:jgE28资讯网——每日最新资讯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,并配置好相关的参数,以便实际发送短信。jgE28资讯网——每日最新资讯28at.com

示例中完整代码,可以从下面网址获取:jgE28资讯网——每日最新资讯28at.com

https://gitee.com/jlearning/wechatdemo.gitjgE28资讯网——每日最新资讯28at.com

https://github.com/icoderoad/wxdemo.gitjgE28资讯网——每日最新资讯28at.com

jgE28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-17262-0.html使用工厂类实现阿里云、腾讯云及华为云发送短信功能

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Gorm 中的迁移指南

下一篇: 使用Gorm进行高级查询

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 7月安卓手机好评榜:三星S23Ultra好评率第一

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年7月1日至7月31日,仅限国内市场。第一名:三星Galaxy S23 Ultra好评率:95.71%在即将迎来新
  • 一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • 回归OPPO两年,一加赢了销量,输了品牌

    成为OPPO旗下主打性能的先锋品牌后,一加屡创佳绩。今年618期间,一加手机全渠道销量同比增长362%,凭借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • Windows 11发布,微软一改往常对老机型开放的态度

    距离 Windows 11 发布已经过去一周,在过去一周里,很多数码爱好者围绕其对 Android 应用的支持、对老机型的升级问题展开了激烈讨论。与以往不同的是,在这次大
  • “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主“七王”在群里介绍一些刷单赚
Top