SystemDictStarter v1.4.4,一种优雅的数据字典文本转换方式

栏目: 软件资讯 · 发布时间: 3年前

内容简介:在日常项目开发中,不免都会用到一些数据字典的信息,遇到这种场景通常都是后端把字典的文本转换好一起返回给前端,前端只需要直接展示即可。 一般情况下后端可能需要单独给返回对象创建一个字段来存储对应的字典...

在日常项目开发中,不免都会用到一些数据字典的信息,遇到这种场景通常都是后端把字典的文本转换好一起返回给前端,前端只需要直接展示即可。

一般情况下后端可能需要单独给返回对象创建一个字段来存储对应的字典文本值,然后进行手动的处理,这种方式通常比较繁琐,在字段多的时候会增加更多的工作量。

本项目基于 Jackson 的自定义注解功能实现了这一自动转换过程,不需要在对象中定义存放字典文本的字段,只需要在字段上使用 @DictText 注解,Jackson序列化的时候即可自动把字典值转换成字典文本。

更新日志

功能代码变更

  • feat: 增加一个 RefreshDictValueEvent 事件可以刷新单个字典文本信息
  • feat: 增加一个刷新字典的端点:dictRefresh
  • feat: 增加使用 Redis 的发布/订阅 功能来处理字典刷新事件通知配置(需要设定配置文件来启用)
  • refactor: 修改系统字典端点ID dictSystem 解决系统字典端点控制台日志警告问题
  • refactor: MQ通知其他协同系统刷新字典默认未启用

配置文件变更:

  • 移除 system.dict.mq-header-source-key 配置项
  • 增加 system.dict.mq-type 配置项选择性启用 RefreshDictEvent 事件通知其他系统刷新字典
    • 可选值:none 不启用(默认),amqp 使用 RabbitMQ, redis 使用 Redis 的发布/订阅功能
  • 更改 system.dict.refresh-dict-interval 属性类型为 Duration 类型,默认值未改变

涵盖 1.4.3.X 变更

  • fix: 修复因 Redis 客户端不同导致项目启动报错问题 #I4EBUT
  • fix: 修复 Java 8 环境下 SpringBoot 打包后使用 java -jar 启动异常问题 #I4EUF1

项目地址

详细使用文档

https://gitee.com/houkunlin/system-dict-starter/blob/main/usage.md

注解简单使用示例

// 注解的简单使用
@Data
@AllArgsConstructor
class Bean {
    // {"userType":"1","userTypeText":"普通用户"}
    @DictText("PeopleType")
    private String userType = "1";
}

// 自定义字典文本输出字段
@Data
@AllArgsConstructor
class Bean {
    // {"userType":"1","typeText":"普通用户"}
    @DictText(value = "PeopleType", fieldName = "typeText")
    private String userType = "1";
}

// 使用分隔符来存储多个字典值
@Data
@AllArgsConstructor
class Bean {
    // {"userType":"0,1","userTypeText":"系统管理、普通用户"}
    @DictText(value = "PeopleType", array = @Array(split = ","))
    private String userType = "0,1";
}

// 使用集合来存储多个字典值
@Data
@AllArgsConstructor
class Bean {
     // {"userType":["0","1"],"userTypeText":"系统管理、普通用户"}
    @DictText("PeopleType")
    private List<String> userType = Arrays.asList("0", "1");
}

// 把集合的字典文本转换成数组形式
@Data
@AllArgsConstructor
class Bean {
    // {"userType":["0","1"],"userTypeText":["系统管理","普通用户"]}
    @DictText(value = "PeopleType", array = @Array(toText = false))
    private List<String> userType = Arrays.asList("0", "1");
}

// 转换成 Map 形式输出
@Data
@AllArgsConstructor
class Bean {
    // {"userType":{"text":"普通用户","value":"1"}}
    @DictText(value = "PeopleType", mapValue = DictText.Type.YES)
    private String userType;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Linux Programming Interface

The Linux Programming Interface

Michael Kerrisk / No Starch Press / 2010-11-6 / GBP 79.99

The Linux Programming Interface describes the Linux API (application programming interface)-the system calls, library functions, and other low-level interfaces that are used, directly or indirectly, b......一起来看看 《The Linux Programming Interface》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具