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

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

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

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

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

本项目基于 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;
}

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

查看所有标签

猜你喜欢:

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

一本书读懂24种互联网思维

一本书读懂24种互联网思维

安杰 / 台海出版社 / 2015-3-1 / 39.80元

互联网思维已经不再局限于互联网,与当初人类史上的“文艺复兴”一样,这种思维的核心即将开始扩散开去,对整个大时代造成深远的影响。本书是深入研究互联网思维的精华之作,作者深入浅出地集中阐述了24种互联网思维的内核与精神,并结合实例对这24种互联网思维逐一进行了点评。对于个人与企业如何抓住互联网思维背后正喷薄而出的工作、生活、商业上的大革新与大机遇,如何在互联网思维下进行运作,如何运用互联网思维进行升级......一起来看看 《一本书读懂24种互联网思维》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

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

正则表达式在线测试