您现在的位置是:首页 > 文章详情

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

日期:2021-10-28点击:431

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

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

本项目基于 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; }
原文链接:https://www.oschina.net/news/166332/systemdicstarter-1-4-4-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章