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

SpringBoot3集成SMS4J實(shí)現(xiàn)短信+OA雙渠道消息發(fā)送

 更新時間:2026年04月05日 10:20:42   作者:碼路星河  
本文主要介紹了SpringBoot3快速集成SMS4J,10分鐘搞定短信+OA雙渠道消息發(fā)送,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

做后端業(yè)務(wù)開發(fā),短信發(fā)送是繞不開的基礎(chǔ)功能,但直接對接各家云廠商短信SDK,不僅配置繁瑣、業(yè)務(wù)耦合度高,換個服務(wù)商就要重構(gòu)大半代碼,純純費(fèi)力不討好。而且日常項(xiàng)目里,除了短信驗(yàn)證碼,OA系統(tǒng)消息通知也是高頻需求,單獨(dú)對接OA接口又要額外寫一套邏輯。最近用SpringBoot3做項(xiàng)目,直接上手了SMS4J這個開源工具,不僅適配SpringBoot3.x、一鍵切換多廠商短信,還能同步集成OA消息通知,一套工具搞定雙渠道發(fā)送。

一、項(xiàng)目環(huán)境與核心依賴

先確認(rèn)基礎(chǔ)環(huán)境,我這邊用的是SpringBoot 3.2.5、JDK17。

第一步先引入Maven核心依賴,直接在pom.xml中添加官方starter。

<!-- SMS4J SpringBoot3啟動器 官方最新穩(wěn)定版3.3.5 -->
<dependency>
    <groupId>org.dromara.sms4j</groupId>
    <artifactId>sms4j-spring-boot-starter</artifactId>
    <version>3.3.5</version>
</dependency>
<!-- SMS4J OA消息通知 -->
<dependency>
    <groupId>org.dromara.sms4j</groupId>
    <artifactId>sms4j-oa-core</artifactId>
    <version>3.3.5</version>
</dependency>

依賴引入后刷新Maven,等待下載完成即可,不用額外做依賴排除。

二、核心配置:短信+OA一體化配置

接下來是核心配置環(huán)節(jié),不用寫自定義配置類,直接在application.yml中同時配置短信和OA消息,一份配置文件管理雙渠道,切換廠商和OA地址只改配置,業(yè)務(wù)代碼零改動。我以阿里云短信+通用OA通知為例,配置邏輯清晰易懂。

提前準(zhǔn)備好阿里云短信參數(shù):AccessKey、Secret、短信簽名、模板ID;OA相關(guān)參數(shù):OA接口地址、應(yīng)用密鑰、審批人/接收人標(biāo)識,都是后臺可直接獲取的基礎(chǔ)參數(shù)。

spring:
  application:
    name: sms4j-demo
# SMS4J核心配置,3.3.5版本支持短信+OA雙配置
sms:
  config-type: yaml
  blends:
    # 阿里云短信配置
    aliyun:
      supplier: alibaba
      accessKeyId: 您的阿里云AccessKey
      accessKeySecret: 您的阿里云Secret
      signature: 短信簽名
      templateId: SMS_215125134
      templateName: code
      requestUrl: dysmsapi.aliyuncs.com
   oas:
     oaDingTalkByYaml: # configId
       isEnable: true # 表示該配置是否生效(默認(rèn)生效,false表示不生效)
       supplier: ding_ding # 廠商標(biāo)識
       tokenId: 您的accessKey # webhook 中的 access_token
       sign: 您的sign # 安全設(shè)置在驗(yàn)簽?zāi)J较虏诺拿罔€,非驗(yàn)簽?zāi)J經(jīng)]有此值

不管是新增騰訊云、華為云短信,還是調(diào)整OA對接參數(shù),都只需要在blends下新增或修改配置塊,業(yè)務(wù)邏輯完全不用動,多渠道切換和擴(kuò)展極其靈活,這也是SMS4J的核心優(yōu)勢。

三、代碼實(shí)現(xiàn):短信+OA雙發(fā)送接口

配置完成后直接寫業(yè)務(wù)代碼,SMS4J通過工廠類統(tǒng)一管理渠道實(shí)例,短信和OA發(fā)送調(diào)用邏輯高度一致,代碼極度簡潔,適配登錄驗(yàn)證碼、業(yè)務(wù)審批通知等場景。

import cn.hutool.core.util.RandomUtil;
import org.dromara.oa.api.OaSender;
import org.dromara.oa.comm.entity.Request;
import org.dromara.oa.comm.entity.Response;
import org.dromara.oa.comm.enums.MessageType;
import org.dromara.oa.core.provider.factory.OaFactory;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.entity.SmsResponse;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.ArrayList;
 
@RestController
@RequestMapping("/sms")
public class SmsController {
 
    /**
     * 通用短信驗(yàn)證碼發(fā)送接口
     * @param phone 接收短信的手機(jī)號
     * @return 發(fā)送結(jié)果反饋
     */
    @GetMapping("/send/{phone}")
    public String sendSmsCode(@PathVariable String phone) {
        // 獲取對應(yīng)廠商標(biāo)識的短信實(shí)例,和yml配置一一對應(yīng)
        SmsBlend smsBlend = SmsFactory.getSmsBlend("aliyun");
        // 生成6位純數(shù)字驗(yàn)證碼,適配絕大多數(shù)驗(yàn)證碼場景
        String code = RandomUtil.randomNumbers(6);
        // 執(zhí)行短信發(fā)送,參數(shù)順序嚴(yán)格匹配短信模板變量順序
        SmsResponse response = smsBlend.sendMessage(phone, code);
        // 結(jié)果返回,開發(fā)階段可直接返回驗(yàn)證碼調(diào)試,生產(chǎn)環(huán)境建議隱藏
        if (response.isSuccess()) {
            return "短信發(fā)送成功,驗(yàn)證碼:" + code;
        }
        return "短信發(fā)送失敗,失敗原因:" + response.getData().toString();
    }
 
    /**
     * 通用OA通知發(fā)送接口
     * @param phone 接收通知的手機(jī)號
     * @return 發(fā)送結(jié)果反饋
     */
    @GetMapping("/send/oa/notice/{phone}")
    public String sendOANotice(@PathVariable String phone) {
        String configId = "oaDingTalkByYaml";
        OaSender alarm = OaFactory.getSmsOaBlend(configId);
        Request request = new Request();
        ArrayList<String> phones = new ArrayList<>();
        phones.add(phone);
        // 支持通過手機(jī)號@
        request.setPhoneList(phones);
        // 支持@all
        // request.setIsNoticeAll(true);
        request.setContent("測試消息");
        Response response = alarm.sender(request, MessageType.DING_TALK_TEXT);
        // 結(jié)果返回
        if (response.isSuccess()) {
            return "OA通知消息發(fā)送成功";
        }
        return "OA通知消息發(fā)送失敗,失敗原因:" + response.getData().toString();
    }
}

注意:模板變量順序要和配置、后臺模板完全匹配,OA消息可根據(jù)內(nèi)部需求調(diào)整模板內(nèi)容,支持文本、審批提醒等多種格式,調(diào)用方式和短信完全一致,學(xué)習(xí)成本極低。

四、核心避坑提示

  • 參數(shù)一致性:短信和OA的密鑰、地址、模板ID必須和后臺完全一致,空格、字符錯誤會直接導(dǎo)致發(fā)送失??;
  • 渠道標(biāo)識對應(yīng):SmsFactory獲取實(shí)例的標(biāo)識,必須和yml中blends下的配置名一一對應(yīng),不可寫錯;
  • 生產(chǎn)環(huán)境規(guī)范:敏感密鑰切勿硬編碼,建議放到Nacos、Apollo配置中心,OA內(nèi)網(wǎng)地址做好權(quán)限管控;
  • 單渠道 fallback:可加判斷邏輯,某一渠道失敗時,另一渠道兜底,提升消息送達(dá)率。

五、總結(jié)

整體集成全程不到10分鐘,依托SMS4J 3.3.5最新版本,SpringBoot3集成零兼容問題,不僅搞定了多廠商短信的解耦對接,還順帶實(shí)現(xiàn)了OA消息通知,一套框架管理雙渠道消息,代碼簡潔、擴(kuò)展靈活。不管是中小型項(xiàng)目的基礎(chǔ)消息功能,還是需要多渠道災(zāi)備的業(yè)務(wù)場景,都能快速落地。

到此這篇關(guān)于SpringBoot3集成SMS4J實(shí)現(xiàn)短信+OA雙渠道消息發(fā)送的文章就介紹到這了,更多相關(guān)SpringBoot3集成SMS4J雙渠道消息發(fā)送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

赤水市| 界首市| 屏山县| 璧山县| 英超| 苗栗县| 法库县| 师宗县| 抚州市| 社旗县| 枣强县| 九江县| 宁城县| 禹城市| 延安市| 石家庄市| 横山县| 临沭县| 大田县| 米泉市| 双辽市| 交口县| 务川| 温宿县| 大埔区| 双江| 奇台县| 六盘水市| 武鸣县| 三明市| 北宁市| 阿图什市| 新宾| 克拉玛依市| 邯郸市| 神农架林区| 左权县| 嫩江县| 通许县| 喀什市| 定州市|