SpringBoot发送短信starter插件,默认实现腾讯云的短信发送服务,易扩展,快速部署

    xiaoxiao2025-02-04  41

    项目地址

    https://github.com/zhangyinhao1234/spring-boot-starter-sms

    使用说明

    发送短信的核心组件,默认实现了示远科技,大汉三通和腾讯云的短信发送。实现多供应商的短信接口,当有任何一方短信发送失败后会使用另外的短信平台发送短信。

    对扩展支持:如果想增加其他短信供应商,可以继承 AbstractSMSServer 抽象类。轻松替换/增加短息平台

    扩展接口:

    SMSConfig:必须实现此接口。实现接口做到随时关闭短信服务,启动/禁用指定短信平台

    SMSErrorInfoSend:实现此接口可将发送错误的短信进行保存,便于后续的统计

    SMSSaveContent:如果你有保存短信内容的需求可以实现此接口

    SMSSpringBeanUtil:必须实现此接口。通过ID获取指定的短信供应商短信发送的实现类

    以上的实现类必须添加到Spring的上下文中,你可以使用@Bean 注解

    安装:

    在spring-boot-starter-sms\sms-plugin 目录执行 mvn clean install

    在spring-boot-starter-sms\spring-boot-starter-sms 目录执行 mvn clean install

    简单使用:
    @Autowired private SMSControlCenter smsControlCenter; @Test public void testSSMSConfigImplendSMS() throws IOException{ String content="您的手机验证码是:123456,打死都不能告诉别人哦!(15分钟有效)"; SMSSendParams params=new SMSSendParams(this.telephone, content); params.setType(ISMSToolService.Type.content); smsControlCenter.sendSMS(params); } 添加新接入的短信平台 /** * * 新增加的短信平台 * * @author zhang 2019年5月25日 下午9:35:36 */ @Component("nEWSMSSendImpl") public class NEWSMSSendImpl extends AbstractSMSServer{ @Override public SendCode sendVoiceSecurityCode(SMSSendParams params) { // TODO Auto-generated method stub return null; } @Override public String getSMSServiceName() { // TODO Auto-generated method stub return null; } @Override public SendCode sendSMS(SMSSendParams params) { // TODO Auto-generated method stub return null; } @Override public String getFreeSignName() { // TODO Auto-generated method stub return null; } }
    spring mvc项目如何使用:

    POM.xml添加引用

    <dependency> <groupId>com.github.zhangyinhao1234.plugin</groupId> <artifactId>sms-plugin</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>

    初始化:

    @Bean public ISMSToolService dHSTSMS() { return new DHSTSMS(); } @Bean public SMSControlCenterImpl smsControlCenter(SMSSpringBeanUtil smsSpringBeanUtil) throws ClassNotFoundException, InstantiationException, IllegalAccessException { SMSControlCenterImpl smsControlCenterImpl = new SMSControlCenterImpl(); smsControlCenterImpl.setDefaultSpringids("sykjSMSService,qcloudSMS,dHSTSMS"); smsControlCenterImpl.setSmsConfig(sMSConfig()); smsControlCenterImpl.setApplicationContextUtil(smsSpringBeanUtil); return smsControlCenterImpl; } private SMSConfig sMSConfig() { return new SMSConfigImpl(); } @Bean public SMSSpringBeanUtil smsSpringBeanUtil() { return new SMSSpringBeanUtilImpl(); }

    使用:

    @Autowired private SMSControlCenter smsControlCenter; @Test public void testSSMSConfigImplendSMS() throws IOException{ String content="您的手机验证码是:123456,打死都不能告诉别人哦!(15分钟有效)"; SMSSendParams params=new SMSSendParams(this.telephone, content); params.setType(ISMSToolService.Type.content); smsControlCenter.sendSMS(params); }
    在SpringBoot 中如何使用

    POM.xml添加引用

    <dependency> <groupId>com.github.zhangyinhao1234.plugin</groupId> <artifactId>spring-boot-starter-sms</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>

    添加配置文件

    binpo: plugin: sms: smsspingBeanIds: aa,bb,cc # 需要添加的自己开发短信发送实现类的 spring bean id # 腾讯云配置文件 qcloud: true # 使用腾讯云的短信服务 true/false 不配置表示不使用 qcloudAppId: 1000000 qcloudAppKey: APPkey qcloudSignName: 【XX科技】 # 短信签名 # 大汉三通短信 dhst: true dhstAccount: xxxx #内容短信账号 dhstPwd: pwd # 内容短信密码 dhstVoiceAccount: xxxx # 语音账号 dhstVoicePwd: pwd # 语音密码
    在SpringBoot 中使用的例子
    @Autowired private SMSControlCenter smsControlCenter; @RequestMapping("/sms/send/{tel}") public Map send(HttpServletRequest request, HttpServletResponse response,@PathVariable String tel, String content) throws IOException { content = "您的手机验证码是:123456,打死都不能告诉别人哦!(15分钟有效)"; SMSSendParams params = new SMSSendParams(tel, content); params.setType(ISMSToolService.Type.content); smsControlCenter.sendSMS(params); Map map = new HashMap(); map.put("success", "1"); return map; }

    就是这么简单。

    如果在项目中有需要进行业务短信发送的话,不妨使用这个插件,在Springboot中可以直接引用插件,基础的部分已经完成,只需要添加Controller,部署为一个微服务就可以对项目中的系统提供短信发送服务了。

    如果你们和其他的短信供应商谈好了合作,那么只需要继承AbstractSMSServer 抽象类,并且实现相应方法。就可以将此短信服务添加到Spring 的上下问中,不需要修改原来的代码,实现易扩展。

    项目代码请参考:https://github.com/zhangyinhao1234/spring-boot-starter-sms

    最新回复(0)