SpringBoot 数据翻译组件-easy_trans

2023-12-10 02:48

本文主要是介绍SpringBoot 数据翻译组件-easy_trans,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

在项目开发中,借助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.3</version></dependency>

Mybatis plus用户另外还需要加以下扩展:

        <dependency><groupId>com.fhs-opensource</groupId><artifactId>easy_trans_mybatis_plus_extend</artifactId><version>1.1.3</version></dependency>

JPA 用户另外还需要加以下扩展:

        <dependency><groupId>com.fhs-opensource</groupId><artifactId>easy_trans_jpa_extend</artifactId><version>1.1.3</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.implpackage: com.fhs.test.service.**;com.fhs.test.dao.** #启用redis缓存 如果不用redis请设置为falseis-enable-redis: true #启用全局翻译(拦截所有responseBody进行自动翻译),如果对于性能要求很高可关闭此配置is-enable-global: true #启用平铺模式is-enable-tile: true
spring:#如果用到redis配置redis连接redis:host: 192.168.0.213port: 6379password: 123456database: 0timeout: 6000

3、如果不使用redis,请在启动类加禁用掉redis的自动配置类

@SpringBootApplication(exclude = { RedisAutoConfiguration.class })

4、初始化字典数据(如果你们项目没字典表请忽略)

       @Autowired  //注入字典翻译服务private  DictionaryTransService dictionaryTransService;//在某处将字典缓存刷新到翻译服务中,以下是demoMap<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",ref = "sexName")private Integer sex;//这个字段可以不写,实现了TransPojo接口后有一个getTransMap方法,sexName可以让前端去transMap取private String sexName;//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,看返回结果。

参与贡献和技术支持

如果遇到使用问题可以加QQ群:976278956
如果你们使用了此插件,请留下单位名称。

示例项目

fhs_opensource/easy_trans_springboot_demo

开源项目地址:

easy_trans: easy trans适用于两种场景1 我有一个id,但是我需要给客户展示他的title/name 但是我又不想做表关联查询2 我有一个字典吗 sex 和 一个字典值0 我希望能翻译成 男 给客户展示。

插件文档

Wiki - Gitee.com

已经使用此插件的企业

1、陕西小伙伴网络科技有限公司
2、中软国际云智能业务集团
3、深圳市易流科技股份有限公司
4、陕西逐道科技有限公司
5、深圳市易联联盟科技有限公司

 

这篇关于SpringBoot 数据翻译组件-easy_trans的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/475813

相关文章

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映