• Config:用户属性配置框架


    Config 是一个用户属性配置框架,它基于 Xbatis 实现,可以在 SpringBoot 应用环境中使用,对于某一个配置属性:

    • 属性可以有默认值
    • 不同的用户可以有不同的属性值
    • 可以动态更新属性值

    每一个配置属性必须为默认用户设置属性值。

    用户属性配置数据存储于 MySQL,核心数据结构由以下三部分组成:

    • 用户(uid)
    • 属性名称(name)
    • 属性值(value)

    以配置属性 propertyA、propertyB,用户 userA、userB 为例:

    uid name value
    system propertyA valA
    userA propertyA valA2
    system propertyB valB

    system 为默认用户。

    如果获取配置属性名称 propertyA 的属性值(未指定用户,使用默认用户 system),返回 valA;
    如果获取用户 userA、配置属性名称 propertyA 的属性值,返回 valA2;

    如果获取配置属性名称 propertyB 的属性值(未指定用户,使用默认用户 system),返回 valB;
    如果获取用户 userB、配置属性名称 propertyB 的属性值(未设置用户 userB、配置属性名称 propertyB 的属性值,使用默认用户 system、配置属性名称 propertyB的属性值),返回 valB;

    如果获取配置属性名称不存在,返回 空值

    通过修改 MySQL 中指定用户、配置属性名称的属性值,即可以实现配置属性值的动态更新。

    安装

    下载源码

    git clone https://github.com/njdi/durian.git
    

    编译源码

    cd durian/
    

    切换至最新版本(Tag),如:0.4,

    git checkout 0.4
    

    编译安装至本地 Maven 仓库:

    mvn clean package
    

    添加依赖

    SpringBoot 应用使用 Config 时,需要在 Maven pom.xml 中添加:

    <dependency>
      <groupId>io.njdi</groupId>
      <artifactId>durian-xbatis</artifactId>
      <version>${version}</version>
    </dependency>
    
    <dependency>
      <groupId>io.njdi</groupId>
      <artifactId>durian-config</artifactId>
      <version>${version}</version>
    </dependency>
    

    ${version} 替换为具体的版本号,如:0.4。

    数据表

    创建数据表:

    CREATE TABLE `config` (
      `id` int NOT NULL AUTO_INCREMENT,
      `uid` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
      `name` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL,
      `value` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uid_name` (`uid`,`name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    

    配置

    SpringBoot 应用使用 Config 时,需要在 application.yml 中添加:

    spring:
      datasource:
        url: jdbc:mysql://mysql_dev:13306/yurun?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
        username: root
        password: HUPf0elbIgAKekBR
        hikari:
          keepaliveTime: 30000
          maxLifetime: 600000
          maximumPoolSize: 30
    
    mybatis:
      mapper-locations: classpath:xbatis.xml
    

    spring.datasource.* 相关属性用于配置数据库数据源。

    数据表名称

    数据表名称默认为 config,如果需要使用其它的名称,可以通过 application.yml 设置:

    durian:
      config:
        table: ${tableName}
    

    默认用户名称

    默认用户名称为 system,如果需要使用其它的名称,可以通过 application.yml 设置:

    durian:
      config:
        system: ${userName}
    

    使用

    XbatisManager

    用户属性配置的获取和设置需要通过 XbatisManager 实例实现,SpringBoot 应用中可以自动注入:

    @Autowired
    private XbatisManager xbatisManager;
    

    获取配置属性

    获取指定配置属性名称(默认用户)的值:

    configManager.get("string");
    configManager.getInt("int");
    configManager.getLong("long");
    configManager.getFloat("float");
    configManager.getDouble("double");
    configManager.getBoolean("boolean");
    

    获取指定配置属性名称(默认用户)的值(数组):

     configManager.gets("strings");
     configManager.getInts("ints");
     configManager.getLongs("longs");
     configManager.getFloats("floats");
     configManager.getDoubles("doubles");
     configManager.getBooleans("booleans");
    

    获取指定用户、配置属性名称的值,可以使用上述方法名称的重载方法,如:

    configManager.get("user", "string")
    
    configManager.gets("user", "strings")
    

    其它数据类型使用方法类似,不再赘述。

    设置配置属性

    设置指定配置属性名称(默认用户)的值:

    configManager.set("string", "value");
    

    设置指定用户、配置属性名称的值:

    configManager.set("user", "string", "value");
    

    其它数据类型使用方法类似,不再赘述。

    列出配置属性

    列出所有用户的所有配置属性:

    List<ConfigBo> list(int page, int pageSize);
    

    列出指定用户的所有配置属性:

    List<ConfigBo> listByUid(String uid, int page, int pageSize);
    

    列出指定配置属性名称的所有用户属性:

    List<ConfigBo> listByName(String name, int page, int pageSize);
    

    ConfigBo 的一个实例对象表示一个用户配置属性。

    删除配置属性

    删除指定 ID 的配置属性:

    void delete(int id);
    

    用户配置属性的 ID 可以通过 ConfigBo 获取。

    删除指定用户、配置属性名称的配置属性:

    void delete(String uid, String name);
    

    删除指定用户的所有配置属性:

    void deletesByUid(String uid);
    

    删除指定配置属性名称的所有配置属性:

    void deletesByName(String name);
    

    缓存

    Config 兼容 SpringBoot Caching

  • 相关阅读:
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 41 缺失的第一个正数
    Java实现 LeetCode 41 缺失的第一个正数
    Java实现 LeetCode 41 缺失的第一个正数
  • 原文地址:https://www.cnblogs.com/yurunmiao/p/15951974.html
Copyright © 2020-2023  润新知