跳至主要內容

🌿在SpringBoot环境使用

wind大约 4 分钟

前言

在正式使用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
等待手机收到短信