SpringBoot环境集成 sms4j短信聚合

news2025/1/12 22:58:07

SpringBoot环境集成 sms4j短信聚合

在这里插入图片描述

官方文档

前言

在正式使用sms4j短信功能之前,请详细阅读本文档,依照本篇流程进行操作和配给,即可解决大部分问题,如对我们的文档有建议,请联系开发者团队,
我们将根据可取的建议进行优化。

在SpringBoot环境集成

1.创建项目

在 IDE 中新建一个 SpringBoot 项目,例如:sms-demo-springboot

2.添加依赖

在项目中添加maven依赖:

最新版本请查看首页

<dependency>
     <groupId>org.dromara.sms4j</groupId>
     <artifactId>sms4j-spring-boot-starter</artifactId>
     <version> version </version>
</dependency>

3.设置配置文件

自 V3.0.0版本开始,sms4j开始支持单厂商多配置,可以同时配置多个
支持以下两种配置方式,根据自己的需求任选其一即可

  • 第一种配置方式 通过yml配置(适用于配置固定很少变更)
    各厂商配置字段,请查看 厂商配置 页以获取不同厂商的差异化配置字段
  sms:
    # 标注从yml读取配置
    config-type: yaml
    blends:
      # 自定义的标识,也就是configId这里可以是任意值(最好不要是中文)
      tx1:
        #厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
        supplier: tencent
        #您的accessKey
        access-key-id: 您的accessKey
        #您的accessKeySecret
        access-key-secret: 您的accessKeySecret
        #您的短信签名
        signature: 您的短信签名
        #模板ID 非必须配置,如果使用sendMessage的快速发送需此配置
        template-id: xxxxxxxx
        #您的sdkAppId
        sdk-app-id: 您的sdkAppId
        # 自定义的标识,也就是configId这里可以是任意值(最好不要是中文)
      tx2:
        #厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
        supplier: tencent
        #您的accessKey
        access-key-id: 您的accessKey
        #您的accessKeySecret
        access-key-secret: 您的accessKeySecret
        #您的短信签名
        signature: 您的短信签名
        #模板ID 非必须配置,如果使用sendMessage的快速发送需此配置
        template-id: xxxxxxxx
        #您的sdkAppId
        sdk-app-id: 您的sdkAppId

  • 第二种配置方式 通过接口配置自定义数据来源(适用于需要动态增改配置)
    sms4j 自3.0.0版本开始去除了JDBC等方式的配置,统一改为了接口类进行配置
    接口只关注数据结果,不关注数据来源,此种方式有更高的自由度
@Component
public class ReadConfig implements SmsReadConfig {
    @Override
    public BaseConfig getSupplierConfig(String configId) {
        //这里需要注意,UniConfig只是代表合一短信的配置类,仅做示例使用,根据不同厂商选择实例化不同的配置类
        UniConfig uniConfig = new UniConfig();
       //此处仅为示例,实际环境中,数据可以来自任意位置,
        return uniConfig;
    }

    @Override
    public List<BaseConfig> getSupplierConfigList() {
        //此处仅为示例,实际环境中,数据可以来自任意位置,
        return null;
    }
}

@Component
public class Demo {
    @Autowired
    ReadConfig config;

    @EventListener
    public void init(ContextRefreshedEvent event){.
        // 创建SmsBlend 短信实例
        SmsFactory.createSmsBlend(config,"在配置中定义的configId");
    }
}

4.创建测试controller

@RestController
public class TestController {

    @GetMapping("/test")
    public void testSend(){
        //在创建完SmsBlend实例后,再未手动调用注销的情况下框架会持有该实例,可以直接通过指定configId来获取想要的配置,如果你想使用
        //负载均衡形式获取实例,只要使用getSmsBlend的无参重载方法即可,如果你仅有一个配置,也可以使用该方法
        SmsBlend smsBlend = SmsFactory.getSmsBlend("在配置中定义的configId");
        SmsResponse smsResponse = smsBlend.sendMessage("18888888888","123");
    }
}

5.运行

启动代码,从浏览器访问 localhost:8080/test
等待手机收到短信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1888777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring与Quartz整合

Quartz框架是一个轻量级的任务调度框架&#xff0c;它提供了许多内置的功能&#xff0c;包括&#xff1a;支持作业的调度、集群调度、持久化、任务持久化、任务依赖、优先级、并发控制、失败重试等。同时也支持自定义作业类型和触发器类型。与Spring整合步骤如下&#xff1a; …

怎么参与场外期权?

今天期权懂带你了解怎么参与场外期权&#xff1f; 目前个人投资者暂时还不能直接参与场外个股期权&#xff0c;因为场外个股期权现在只能机构来进行交易。 所以个人投资者目前只能通过机构通道来进行操作&#xff0c;类似期权懂&#xff0c;找到期权懂经理&#xff0c;然后通…

思维,CF 739A - Alyona and mex

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 739A - Alyona and mex 二、解题报告 1、思路分析 我们考虑区间mex运算的值最大也就是区间长度&#xff0c;所以我们最大值的上界就是所有区间中的最小长度&#xff0c;假如记为mi 我们一定可以构造出答案…

详解HTTP:常用的密钥交换算法RSA与ECDHE

HTTPS 常用的密钥交换算法&#xff1a;RSA 与 ECDHE 在 HTTPS 中&#xff0c;密钥交换算法扮演了至关重要的角色&#xff0c;确保数据在传输过程中的安全性。目前常用的密钥交换算法主要有两种&#xff1a;RSA 和 ECDHE。相比于较为传统的 RSA&#xff0c;ECDHE 由于具备前向安…

软连接迁移 Docker 的默认安装(存储)目录

前言 经常我们会拿到一些别人装好的服务器&#xff0c;需要在这些系统上启动我们的docker服务。 但是这些“专业人员”呢&#xff0c;有时候就会有非常不专业的操作&#xff0c;比如他把根目录/只划分50GB&#xff0c;/home却有51TB。这个时候就会导致我们的服务器还有很多空间…

java+mysql教师管理系统

完整源码地址 教师信息管理系统使用命令行交互的方式及数据库连接实现教师信息管理系统&#xff0c;该系统旨在实现教师信息的管理&#xff0c;并根据需要进行教师信息展示。该软件的功能有如下功能 (1)基本信息管理(教师号、姓名、性别、出生年月、职称、学历、学位、教师类型…

工业实时操作系统对比:鸿道Intewell跟rt-linux有啥区别

Intewell和RT-Linux是两种不同的实时操作系统&#xff08;RTOS&#xff09;&#xff0c;它们具有各自独特的特点和优势。以下是Intewell操作系统的一些关键特性&#xff0c;以及与RT-Linux的比较&#xff1a; 自主研发&#xff1a;Intewell是由科东软件自主研发的工业嵌入式实…

监控与安全服务

kali 系统 nmap扫描 网段的扫描 使用脚本扫描 使用john破解密码 哈希算法是一种单向加密的算法&#xff0c;也就是将原始数据生成一串“乱码”只能通过原始数据&#xff0c;生成这串“乱码”&#xff0c;但是不能通过“乱码”回推出原始数据相同的原始数据&#xff0c;生成的乱…

数据治理体系建设方案

数据治理体系建设方案 在当前的大数据时代&#xff0c;数据已经成为企业核心资产之一&#xff0c;其管理与治理的重要性愈加凸显。有效的数据治理体系不仅能提升数据质量和数据使用的效率&#xff0c;还能为企业创造更多的商业价值。本文将详细阐述数据治理的重要性、核心要素…

星辰资讯 | TiUP v1.16 发版,支持 PD 微服务

如果你对 TiDB 还不太了解&#xff0c;或者你对数据库安装部署的认知仍然停留在手动和脚本时代&#xff0c;那么&#xff0c;请先戳这里了解一下 TiUP 神器&#xff1a; 震惊&#xff01;数据库小白装国产数据库只需10分钟&#xff01; TiDB 7.x 源码编译之 TiUP 篇 TiUP&#…

师傅们 ~ 2024HW一手资料

各位师傅们&#xff0c;2024HW来了&#xff01; 从2026年开始&#xff0c;随着我国对网络安全的重视&#xff0c;涉及单位不断增加&#xff0c;越来越多单位和个人都加入到HW当中。 2024HW就在眼前&#xff0c; 那么还有不了解或者还没投简历面试的朋友们&#xff0c;需要注意…

Python23 使用Tensorflow实现线性回归

TensorFlow 是一个开源的软件库&#xff0c;用于数值计算&#xff0c;特别适用于大规模的机器学习。它由 Google 的研究人员和工程师在 Google Brain 团队内部开发&#xff0c;并在 2015 年首次发布。TensorFlow 的核心是使用数据流图来组织计算&#xff0c;使得它可以轻松地利…

​​​​Linux LVS 负载均衡群集

在业务量达到一定量的时候&#xff0c;往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡&#xff0c;当有服务出现异常&#xff0c;也能够自动剔除。但是负载均衡服…

GB28181百万路视频接入

重定向 国标28181在设计时就考虑了&#xff0c;省区县多层级接入&#xff0c;接入上限就考虑了呼叫重定向&#xff1a; IETF RFC3261 规定的SIP逻辑实体,负责规划SIP呼叫路由。它将获得的呼叫下一跳地址信息 告诉呼叫方,以使呼叫方根据此地址直接向下一跳发出请求,此后重定向服…

在 WebGPU 与 Vulkan 之间做出正确的选择(Making the Right Choice between WebGPU vs Vulkan)

在 WebGPU 与 Vulkan 之间做出正确的选择&#xff08;Making the Right Choice between WebGPU vs Vulkan&#xff09; WebGPU 和 Vulkan 之间的主要区别WebGPU 是什么&#xff1f;它适合谁使用&#xff1f;Vulkan 是什么&#xff1f;它适合谁使用&#xff1f;WebGPU 和 Vulkan…

Vue3Echarts实用的双层饼图

在公司客户端项目开发中&#xff0c;用来区分已处理与未处理两个状态的双层饼图&#xff0c;以下是项目案例&#xff1a; 下载Echarts //npm npm install echarts --save//淘宝镜像cnpm(安装速度快) cnpm install echarts --save//yarn yarn add echarts 代码示例 <temp…

llm学习-3(向量数据库的使用)

1&#xff1a;数据读取和加载 接着上面的常规操作 加载环境变量---》获取所有路径---》加载文档---》切分文档 代码如下&#xff1a; import os from dotenv import load_dotenv, find_dotenvload_dotenv(find_dotenv()) # 获取folder_path下所有文件路径&#xff0c;储存在…

冒泡排序写法

正宗的冒泡排序写法&#xff1a; public class BubbleSort {public static void main(String[] args) {int[] a {4,6,5,24,3,7,1};//初始化一个最大角标变量int n a.length-1;//循环轮次for (int i0;i<n;i){//从后向前开始&#xff0c;相邻元素比较大小&#xff0c;小的元…

python学习-tuple及str

为什么需要元组 定义元组 元组的相关操作 元组的相关操作 - 注意事项 元组的特点 字符串 字符串的下标&#xff08;索引&#xff09; 同元组一样&#xff0c;字符串是一个&#xff1a;无法修改的数据容器。 如果必须要修改字符串&#xff0c;只能得到一个新的字符串&#xff…

基于SpringBoot高校体育运动会管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…