介绍
easy trans适用于3种场景
1 有userId/idCardNo(身份证号码-唯一键场景) 需求 userName,无需联表查询。
2 有gender code 0 需求 男。
3 枚举指定特点给前端
亮点
1 缓存支撑
2 跨微服务翻译支撑(User和Order 是2个不同微服务,order里面有userId 需求userName)
3 国际化支撑
4 多种ORM框架适配
5 多数据源支撑
6 调集支撑(userIds [1,2,3] 翻译为张三,李四,王五)
运用步骤
技能司理/架构 需求做的工作
1 、先把maven 引证加上(注意,阿里云Maven库房可能无法获取最新版别,切到腾讯或许运用中心库房即可。当然也能够挑选阿里云有的版别运用)
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
Mybatis plus 扩展:
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-mybatis-plus-extend</artifactId>
<version>2.1.5</version>
</dependency>
JPA 扩展:
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-jpa-extend</artifactId>
<version>2.1.5</version>
</dependency>
Beetl SQL 扩展:
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-beetl-sql-extend</artifactId>
<version>2.1.5</version>
</dependency>
TK Mybatis(通用mapper) 扩展:
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-tk-extend</artifactId>
<version>2.1.5</version>
</dependency>
假如运用Redis请增加redis的引证(假如之前加过了请不要重复增加)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、在yaml中增加如下配置
easy-trans:
#启用redis缓存 假如不用redis请设置为false
is-enable-redis: true
#启用大局翻译(阻拦一切responseBody进行主动翻译),假如关于功能要求很高可关闭此配置
is-enable-global: true
#启用平铺形式
is-enable-tile: true
#字典缓存放到redis 微服务形式请敞开
dict-use-redis: true
# ruoyi相关的请敞开
is-enable-map-result: true
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("gender",transMap);
5、微服务配置
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;
// 枚举翻译,回来文科仍是理科给前端
@Trans(type=TransType.ENUM,key = "desc")
private StudentType studentType = StudentType.ARTS;
public static enum StudentType{
ARTS("文科"),
SCIENCES("理科");
private String desc;
StudentType(String desc){
this.desc = desc;
}
}
}
然后访问你的controller,看回来成果。
easy trans 支撑的五种类型
字典翻译(TransType.DICTIONARY)
需求运用者把字典信息刷新到DictionaryTransService 中进行缓存,运用字典翻译的时分取缓存数据源
简略翻译(TransType.SIMPLE)
比方有userId需求userName或许userPo给前端,原理是组件运用MybatisPlus/JPA的API主动进行查询,把成果放到transMap中。
跨微服务翻译(TransType.RPC)
比方订单和用户是2个微服务,可是我要在订单详情里展示订单的创建人的用户名,需求用到RPC翻译,原理是订单微服务运用restTemplate调用用户服务的一个一致的接口,把需求翻译的id传过去,然后用户微服务运用MybatisPlus/JPA的API主动进行查询把成果给订单微服务,然后订单微服务拿到数据后进行翻译,当然运用者仅仅需求一个注解,这些工作都是由组件主动完成的。
AutoTrans(TransType.AUTO)
仍是id翻译name场景,可是运用者假如想组件调用自己写的方法而不通过Mybatis Plus/JPA 的API进行数据查询,就能够运用AutoTrans
枚举翻译(TransType.ENUM)
比方我要把SEX.BOY 翻译为男,能够用枚举翻译。
项目地址
gitee.com/dromara/eas…
示例项目
gitee.com/fhs-opensou…
插件文档
easy-trans.fhs-opensource.top/
已经运用此插件的企业(非彻底统计)
1、陕西小伙伴网络科技有限公司
2、中软国际云智能事务集团
3、深圳市易流科技股份有限公司
4、陕西逐道科技有限公司
5、深圳市易联联盟科技有限公司
6、中体数科(北京)体育开展有限公司
7、首都信息开展股份有限公司
8、航天神舟智慧体系技能有限公司
9、小诺V2 gitee.com/xiaonuobase…
10、山东巨细同屏科技有限公司
11、山东酸橙网络科技有限公司
12、桔子数字科技有限公司
13、成都新潮传媒集团股份有限公司
14、陕西汇每家信息科技有限公司(每一天便利店连锁)
15、江西云牛科技
16、广州彩讯数字技能有限公司
17、江苏誉鸣航智能科技有限公司
18、maku-boot gitee.com/makunet/mak…
19、北京大美星空科技有限公司