跳至主要內容

🫓数据库配置

wind大约 4 分钟

数据库配置

自2.0.0版本开始,sms4j支持数据库配置,如果你要使用数据库配置首先你要在基础的配置文件中
设置数据源和关键字段名称,这次的支持中我们采用的是数据库存储json字符串的形式进行的,并不严格要求
表结构,只需要告诉框架他所要查询的字段即可
2.2.0版本新增功能,数据库不再强制使用jdbc的配置形式,他会优先选取容器中存在的DataSource并通过它去获取数据库的连接
如果你的容器中已经存在了可用的DataSource,则可以不用再配置驱动,连接字符串,账号,密码,数据库名等参数
但是依旧需要指定所在表,字段等参数

配置如下:

sms:
  # 告诉框架要读取的厂商配置来源,此处为枚举形式
  config-type: sql_config
  sql:
    # JDBC驱动
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 要链接的数据库名称 此项可不进行配置,直接在url中填写完成连接串也可 2.2.0版本已弃用
    database-name: dev
    # 连接字符串
    url: jdbc:mysql://localhost:3306
    # 数据库账号
    username: root
    # 数据库密码
    password: 123456
    # 配置所在表名
    table-name: config_info
    # 厂商名称存储字段
    supplier-field-name: user_name
    # 配置所在字段
    config-name: pay_psw
    # 配置启用标识字段
    start-name: state
    # 配置启用值  此处意思为 当字段state值为1时,则启用这个配置
    is-start: 1

提示

在数据库中,可以同时存储多行,每行为一个对应的配置,然后通过启用标识字段来决定是否使用他
可以同时启用多个配置,但是统一厂商只能同时启动一个配置,否则会发生配置覆盖

厂商名称枚举

数据库配置模式下 supplier-field-name字段所读取的值以以下枚举的中文值为标砖,我们为这个枚举添加了getName()方法,你可以通过此方法来获取到枚举的中文部分

public enum SupplierType {
    /** 阿里云*/
    ALIBABA("阿里云短信"),
    /** 华为云*/
    HUAWEI("华为云短信"),
    /** 云片*/
    YUNPIAN("云片短信"),
    /** 腾讯云*/
    TENCENT("腾讯云短信"),
    /** 合一短信*/
    UNI_SMS("合一短信"),
    /** 京东云 */
    JD_CLOUD("京东云短信"),
    /** 容联云 */
    CLOOPEN("容联云短信"),
    /** 亿美软通 */
    EMAY("亿美软通"),
    /** 天翼云 */
    CTYUN("天翼云短信"),
    ;
}

提示

在持久化存储的数据库中,框架层面很难监听到数据库的变化,如果强行进行轮询势必会导致数据库的性能损失
因此,你在改变了数据库的配置信息后,请手动调用 SmsFactory.refreshSqlConfig() 方法进行手动刷新配置

配置文件类型枚举

目前版本中支持的配置来源类型为CONFIG_FILE配置文件类型和SQL_CONFIG数据库类型

public enum ConfigType {
    /** 配置文件*/
    CONFIG_FILE("configFile"),

    /** setting配置文件*/
    SETTINGS_FILE("settingsFile"),

    /** 数据库配置*/
    SQL_CONFIG("sqlConfig"),

    /** nacos配置*/
    NACOS_CONFIG("nacosConfig");
}