java实现应用系统中字典统一翻译组件

字典翻译在我们应用里是一个很正常普遍的需求。

对于小型项目我们可能在数据库设计层面通常不会进行分库处理,那么对于此类项目,通常字典翻译会通过sql语句的子查询来处理,如果业务系统中存在较多的字段为code值时,我们需要编写大量的子查询用于code->name 的代码。在代码层面上造成代码的冗余,在查询数据体量较大的情况并且编写sql人员的能力的不足导致查询性能问题。

对于中大型项目我们可能数据库设计层面进行分库处理,在业务应用层面会通过使用微服务对其业务分割化(尤其现在微服务学习使用成本较低,有成熟的开源应用框架供我们使用-springcloud,dubbo)。那么对于字典这一所属公共服务,通常和业务库进行分库处理,那么使用sql语句进行代码翻译的途径也就无法使用,我们通常会将字典翻译暴露出内部公共api接口,通过内部调用(springcloud使用feign)对字段进行翻译,会造成代码的大量冗余(需要对进行翻译的对象进行迭代获取需要翻译的数据聚合一起调用接口返回数据,再迭代进行字段翻译)。会导致系统的不稳定性,业务系统存在大量的请求到公共服务,导致压力剧增。一旦公共服务挂掉会导致对外业务服务不可用(通过服务降级和增加公共服务集群数据可一定缓解压力)

DTC(Dictionaries Transformation Controller):通过简单配置(注解方式),非嵌入式代码(不想用时可直接关闭),无感知(对于使用者只需要编写一句调用方法即可)对javaBean对向进行字典翻译(满足嵌套复杂结构,支持字典本地-redis缓存)

如何使用DTC组件(spring Starter项目)

 定义基础配置和测试环境配置():

##定义测试数据库地
spring:
  #mysql数据库连接池配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://******:3306/***?useUnicode=true&useSSL=false&characterEncoding=UTF-8&allowMultiQueries=true
    username:***
    password:****
    filters: stat
    maxActive: 20
    initialSize:
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值