一个注解搞定 SpringBoot 数据、枚举、字典翻译!
这是一个或许对你有用的社群 一对一交流/面试小册/简历优化/求职解惑欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料《项目实战视频》从书中学往事上“练”《互联网高频面试题》面朝简历学习春暖花开《架构 x 系统设计》摧枯拉朽掌控面试高频场景题《精进 Java 学习指南》系统学习互联网主流技术栈《必读 Java 源码专栏》知其然知其所以然这是一个或许对你有用的开源项目国产Star破10w的开源项目前端包括管理后台、微信小程序后端支持单体、微服务架构RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRM、AI大模型、IoT物联网等功能多模块https://gitee.com/zhijiantianya/ruoyi-vue-pro微服务https://gitee.com/zhijiantianya/yudao-cloud视频教程https://doc.iocoder.cn【国内首批】支持 JDK17/21SpringBoot3、JDK8/11Spring Boot2双版本来源一行代码的逆袭一、它能解决什么二、5大翻译类型覆盖全场景三、快速接入3步集成四、高频场景五、性能优化开启缓存六、总结还在为ID转名称、字典码转文本、跨服务字段翻译写一堆冗余代码SpringBoot 开箱即用的数据翻译框架 —— Easy‑Trans一个注解搞定所有翻译场景少写30%以上业务代码。一、它能解决什么日常开发高频痛点它全能搞定根据用户ID自动查出用户名、手机号不用手动关联查询字典码 0/1 自动转成「男/女」多个用户ID批量转成「张三,李四,王五」枚举自动映射成前端展示文本跨微服务ID一键翻译不用手写RPC/Feign基于 Spring Boot MyBatis Plus Vue Element 实现的后台管理系统 用户小程序支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能项目地址https://github.com/YunaiV/ruoyi-vue-pro视频教程https://doc.iocoder.cn/video/二、5大翻译类型覆盖全场景Easy‑Trans 内置5种翻译模式业务场景全覆盖基于 Spring Cloud Alibaba Gateway Nacos RocketMQ Vue Element 实现的后台管理系统 用户小程序支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能项目地址https://github.com/YunaiV/yudao-cloud视频教程https://doc.iocoder.cn/video/三、快速接入3步集成1. 引入Maven依赖!-- 核心starter -- dependency groupIdorg.dromara/groupId artifactIdeasy-trans-spring-boot-starter/artifactId version2.3.1/version /dependency !-- MyBatis-Plus扩展用JPA则引入jpa-extend -- dependency groupIdorg.dromara/groupId artifactIdeasy-trans-mybatis-plus-extend/artifactId version2.3.1/version /dependencyyml配置easy-trans: #启用redis缓存 如果不用redis请设置为false is-enable-redis:true #启用全局翻译(拦截所有responseBody进行自动翻译)如果对于性能要求高可关闭此配置,在方法上使用注解翻译 is-enable-global:true #是否启用平铺模式 翻译后的字段与原属性同级展示 is-enable-tile:false #字典缓存放到redis 微服务模式请开启 dict-use-redis:true #使用RpcTrans来标记哪些类可以进行RPC翻译默认为关闭多团队协作推荐开启 is-enable-custom-rpc:true # ruoyi相关的框架请开启 is-enable-map-result:true # 反向翻译数据库类型 mysql db-type:mysql # Mybatis-plus 为 3.5.3.2版本以上的3.x 版本请设置为true mp-new:true2. 实体类标记实现 TransPojo需要被翻译/作为数据源的实体实现TransPojo接口Data public class User implements TransPojo { private Long id; private String userName; private Integer gender; }四、高频场景简单翻译SIMPLEID→名称设备表的userId自动翻译为用户名/手机号Data public class Device implements TransPojo { private Long id; private String deviceName; // 自动关联User表查userName、phone Trans( type TransType.SIMPLE, target User.class, fields {userName, phone} ) private Long userId; }查询后设备数据后翻译后的数据自动在transMap字段里返回前端。字典翻译码值→文本// 1.如果项目有字典表 可初始化缓存字典如 Autowired private DictionaryTransService dictService; MapString, String map new HashMap(); map.put(0, 男); map.put(1, 女); dictService.refreshCache(gender, map);使用字典注解Trans(type TransType.DICTIONARY, key gender) private Integer gender; //性别枚举翻译ENUM优雅映射// 枚举定义 public enum SexEnum { MAN(1, 男), WOMAN(0, 女); private Integer code; private String desc; }实体使用Trans(type TransType.ENUM, key desc) private SexEnum sexEnum;查询性别数据后接口则返回跨微服务翻译RPC例如订单服务中查用户名称Trans( type TransType.RPC, serviceName user-service, targetClassName cn.demo.user.pojo.User, fields userName ) private Long userId;自定义数据源AUTO_TRANS想自己写SQL/逻辑时使用// 1. 配置包扫描 easy-trans: autotrans: package: com.demo.service.** // 2. 业务类实现AutoTransable AutoTrans(namespace user, fields {userName}) Service publicclass UserServiceImpl implements AutoTransableUser { Override public ListUser selectByIds(List? ids) { // 自定义查询逻辑 return userMapper.selectBatchIds(ids); } }五、性能优化开启缓存给数据源实体加TransDefaultSettTransDefaultSett( isUseCache true, // 开启缓存 cacheSeconds 600, // 过期时间 maxCache 1000 // 最大缓存数 ) public class User implements TransPojo { ... }开启后只查主表关联数据走缓存接口性能大幅提升。六、总结Easy‑Trans 做到零侵入、少代码、高复用单表/字典/枚举/跨服务全覆盖批量查询缓存优化性能无忧遇到ID转名称、码值转文本一个Trans直接搞定官网http://easy-trans.fhs-opensource.cn/欢迎加入我的知识星球全面提升技术能力。 加入方式“长按”或“扫描”下方二维码噢星球的内容包括项目实战、面试招聘、源码解析、学习路线。文章有帮助的话在看转发吧。 谢谢支持哟 (*^__^*
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2532939.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!