跳至主要內容

📹核心类解析

wind大约 5 分钟

自sms4j 3.0.0 位于org.dromara.sms4j.core.factory.SmsFactory类为核心部分,此部分包含了实例的创建,获取,负载均衡的获取等一系列的使用方式。
该类内部方法为静态方法。

创建短信实例

在以上的文档内容中,我们讲述了yml形式的配置、接口类形式的配置、springBoot、javaSE等环境中的使用。sms4j还为大家拓展了更多的方式等待各位的发掘。

根据配置创建短信实例

该方法接收一个配置对象,并根据配置对象中的configId以及supplier短信供应商标识进行实例创建,并将实例置入sms4j框架内部托管

createSmsBlend(SupplierConfig config)

通过配置读取接口创建某个短信实例

该方法需要将接口实现类的对象传入,并指定一个configId,框架将使用configId去接口的实现中获取配置对象并创建实例置入sms4j框架内部托管

createSmsBlend(SmsReadConfig smsReadConfig, String configId)

通过配置读取接口创建全部短信实例

该方法同样需要将接口实现类的对象传入。
SmsReadConfig 接口有两个方法需要实现,其中一个为有参方法另一个为无参方法,无参方法将返回一个list,框架将根据list内部的config对象逐一创建实例并置入sms4j框架内部托管

createSmsBlend(SmsReadConfig smsReadConfig)

创建带有拦截功能的短信实例

sms4j 3.x版本之后。短信拦截支持分化处理,可以有配置启动拦截有配置不启动拦截,用以下方法创建的实例将直接带有拦截功能

根据配置创建带有拦截功能的短信实例

该方法接收一个配置对象,并根据配置对象中的configId以及supplier标识进行实例创建,并将实例置入sms4j框架内部托管

createRestrictedSmsBlend(SupplierConfig config)

通过配置读取接口创建某个带有拦截功能的短信实例

该方法需要将接口实现类的对象传入,并指定一个configId,框架将使用configId去接口的实现中获取配置对象并创建实例置入sms4j框架内部托管

createRestrictedSmsBlend(SmsReadConfig smsReadConfig, String configId)

通过配置读取接口创建全部带有拦截功能的短信实例

该方法同样需要将接口实现类的对象传入。
SmsReadConfig 接口有两个方法需要实现,其中一个为有参方法另一个为无参方法,无参方法将返回一个list,框架将根据list内部的config对象逐一创建实例并置入sms4j框架内部托管

createRestrictedSmsBlend(SmsReadConfig smsReadConfig)

实例获取

sms4j 3.0.0开始负载均衡功能不再需要额外进行配置,可以直接进行使用

通过负载均衡能力获取框架托管的短信实例

该方法将按照配置中的权重,随机获取一个短信实例

getSmsBlend()

通过configId获取短信服务对象

3.0之后最大的特点莫过于可以不更改代码的情况下实现厂商的切换,此功能得益于使用户自定义一个configId标识作为一个实例的唯一ID,我们可以通过以下方法获取他
这或许是我们使用频率最高的方法了

getSmsBlend(String configId)

通过供应商标识获取单个短信实例

有时候我们需要通过供应商的标识(supplier)来获取一个短信实例,例如我们存在多个实例,但是某个厂商只有一个实例的时候

getBySupplier(String supplier)

提示

当某个供应商标识下存在多个实例的时候,该方法无法保证获取到的顺序

通过供应商标识获取全部短信实例

如果我们需要获取某个供应商下的全部实例,我们可以通过以下方法进行
该方法将会获取到一个 List<SmsBlend>

getListBySupplier(String supplier)

获取框架中全部的短信实例

如果我们要获取到现在框架中存在的全部实例,我们可以通过以下方法获取到一个 List<SmsBlend>

getAll()

自主注册实例

开发中的需求总是多样的,sms4j也不可能覆盖所有的厂商,当你需要自己拓展厂商时候,就会用到以下方法

注册短信服务对象

将一个smsBlend实例对象交托给sms4j管理

register(SmsBlend smsBlend)
//指定负载均衡权重
register(SmsBlend smsBlend, Integer weight)

以configId为标识,当短信服务对象不存在时,进行注册

或许有时候我们自己也不知道框架内是否存在这个标识,那么这个方法可以帮助你,如果你需要注册的对象的configId已存在,那他不会进行注册,如果未存在,则他会进行注册

registerIfAbsent(SmsBlend smsBlend)

删除sms4j中托管的短信实例

一个对象总有它的使命结束的那天,或是为新对象腾出位置,或是它不再被需要,这时候我们或许需要对他进行删除

unregister(String configId)