Easy_Trans 1.1.1 版本发布,一个注解搞定字典/外键翻译
1、升级内容
A @Trans注解ref支持添加多个(建议使用平铺模式而不是ref)
B 修复@Trans type写错的话,报空指针bug
C 添加平铺模式
平铺模式为:比如我有一个student类,他有一个teacherid,根据teacherid翻译得到的teacherName框架会放到student的transMap这个map中,序列完了如下:
{ "id":1, "teacherId":1, "transMap":{"teacherName":"王老师"} }
开启平铺模式后序列化为:
{ "id":1, "teacherId":1, "teacherName":"王老师" }
开启方法:
easy-trans.is-enable-tile=true
2、介绍
在项目开发中,借助JPA和Mybatis Plus我们已经可以做到单表查询不写SQL,但是很多时候我们需要关联字典表,关联其他表来实现字典码和外键的翻译,又要去写sql,使用 EasyTrans 你只需要在被翻译的pojo属性上加一个注解即可完成字典码/外键 翻译。
先看效果:
easy trans适用于三种场景
1 我有一个id,但是我需要给客户展示他的title/name 但是我又不想做表关联查询
2 我有一个字典码 sex 和 一个字典值0 我希望能翻译成 男 给客户展示。
3 我有一组user id 比如 1,2,3 我希望能展示成 张三,李四,王五 给客户
食用步骤
技术经理/架构 需要做的事情
1 、先把maven 引用加上
<dependency> <groupId>com.fhs-opensource</groupId> <artifactId>easy-trans-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency>
Mybatis plus用户另外还需要加以下扩展:
<dependency> <groupId>com.fhs-opensource</groupId> <artifactId>easy_trans_mybatis_plus_extend</artifactId> <version>1.1.1</version> </dependency>
JPA 用户另外还需要加以下扩展:
<dependency> <groupId>com.fhs-opensource</groupId> <artifactId>easy_trans_jpa_extend</artifactId> <version>1.1.1</version> </dependency>
如果使用Redis请添加redis的引用(如果之前加过了请不要重复添加)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2、在yaml中添加如下配置
easy-trans: autotrans: #您的service/dao所在的包 支持通配符比如com.*.**.service.**,他的默认值是com.*.*.service.impl package: com.fhs.test.service.**;com.fhs.test.dao.** #启用redis缓存 如果不用redis请设置为false is-enable-redis: true #启用全局翻译(拦截所有responseBody进行自动翻译),如果对于性能要求很高可关闭此配置 is-enable-global: true spring:#如果用到redis配置redis连接 redis: host: 192.168.0.213 port: 6379 password: 123456 database: 0 timeout: 6000
3、如果不使用redis,请在启动类加禁用掉redis的自动配置类
@SpringBootApplication(exclude = { RedisAutoConfiguration.class })
4、初始化字典数据(如果你们项目没字典表请忽略)
@Autowired //注入字典翻译服务 private DictionaryTransService dictionaryTransService; //在某处将字典缓存刷新到翻译服务中,以下是demo Map<String,String> transMap = new HashMap<>(); transMap.put("0","男"); transMap.put("1","女"); dictionaryTransService.refreshCache("sex",transMap);
5、微服务配置(比如订单服务用到了用户服务的user数据来进行翻译,不牵扯微服务的可以不管)
A、白名单添加 /easyTrans/proxy/** 保证其不被拦截,RPC trans的时候easytrans会自动调用目标微服务的接口来获取数据。
B、应用之间的认证可以通过filter/interceptor实现,然后自定义RestTemplate 保证easytrans在请求用户服务的时候带上需要认证的参数
普通程序员需要做的事情
pojo 中添加
@Data @Builder @AllArgsConstructor @NoArgsConstructor //实现TransPojo 接口,代表这个类需要被翻译或者被当作翻译的数据源 public class Student implements TransPojo { // 字典翻译 ref为非必填 @Trans(type = TransType.DICTIONARY,key = "sex") private Integer sex; //SIMPLE 翻译,用于关联其他的表进行翻译 schoolName 为 School 的一个字段 @Trans(type = TransType.SIMPLE,target = School.class,fields = "schoolName") private String schoolId; //远程翻译,调用其他微服务的数据源进行翻译 @Trans(type = TransType.RPC,targetClassName = "com.fhs.test.pojo.School",fields = "schoolName",serviceName = "easyTrans",alias = "middle") private String middleSchoolId; }
然后访问你的controller,看返回结果。
示例项目
https://gitee.com/fhs-opensource/easy_trans_springboot_demo
插件文档
https://gitee.com/fhs-opensource/easy_trans/wikis/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
smqtt 1.0.8 正式发布:高性能、开箱即用的MQTT消息代理
SMQTT 基于 Netty 开发,底层采用 Reactor 3 反应堆模型,支持单机、集群和容器化部署,具备低延迟、高吞吐量,支持百万 TCP 连接,同时支持多种协议交互、规则引擎,是一款非常优秀的消息中间件! smqtt 目前拥有的功能如下: 更新日志 新增规则引擎,规则引擎支持Jexl3表达式 优化项目启动配置类,支持yaml,properties 支持更多配置类参数 优化拦截器 优化集群路由 认证接口添加clientIdentifie 支持配置常用的外部数据源source,包括:mysql、rocketmq、kafka、rabbitmq 支持springboot启动starter 支持系统流控 招募令 由于没有前端工程师,导致SMQTT项目的web管理端迟迟没有开发完善…… 如果你热爱开源,对SMQTT项目感兴趣,同时熟悉前端vue,那就加入我们吧!(通过文档官网找到我) 官网 文档 下载
- 下一篇
Apache APISIX 社区周报 | 2021 10.1-10.14
导语 Apache APISIX 从开源第一天就以社区方式成长,迅速成为全世界最活跃的开源 API 网关项目。这些成就,离不开社区小伙伴们的共同奋斗。 “独行者速,众行者远”。Apache APISIX 社区周报希望可以帮助社区小伙伴们更好地掌握 Apache APISIX 社区的每周进展,方便大家参与到 Apache APISIX 社区中来。 我们还整理了一些适合新来社区的小伙伴们参加的 Issue !感兴趣的同学们,走过路过不要错过! 贡献者统计 Good First Issue Issue#5165 链接: https://github.com/apache/apisix/issues/5165 问题描述: 当浏览器跨域发布然后显示 CORS error 时,wolf-rbac插件的登录url/apisix/plugin/wolf-rbac/login会返回 json 格式,但是header给出的内容类型是text/plain,请修改插件登录后的内容类型为application/json。 wolf-rabc的登录uri/apisix/plugin/wolf-rbac/login...
相关文章
文章评论
共有0条评论来说两句吧...