Java 通用配置 版本配置实现

Java 通用配置

(一)设计

(二)JVM和环境变量实现

(三)用户配置实现

(四)版本配置实现

本系列参考实现:

config: 参数配置,支持按版本设置默认值,支持用户覆盖默认配置,支持环境变量和系统变量,支持Spring配置

https://github.com/mybatis-mapper/config

版本配置设计

版本配置是提供给 模块开发者 使用的, 模块的使用者 可以使用默认的最新版本配置或者通过参数指定要使用的版本配置。

版本配置文件规范

模块开发者一般会把配置和代码一起打包,配置文件通常都在 jar 包内,所以需要从 jar 包读取资源,在读取资源时有很多情况需要考虑,如果允许配置文件出现在任意的 jar 包中,就需要对所有 jar 包中的资源进行扫描,就和 Spring 中配置的扫描包一样,指定范围越小,扫描处理越快。

综合考虑性能和功能,这里的版本配置中指定了如下的要求:

  1. 配置文件和版本配置子类:
    1. 在同一个 jar 包文件中
    2. 在同一个包名中
  2. 版本配置文件使用相同的前缀,后面带上版本号,版本号为两位,示例如下:
    1. mybatis-mapper-v1.0.properties
    2. mybatis-mapper-v1.1.properties
    3. mybatis-mapper-v2.0.properties
    4. mybatis-mapper-v2.5.properties

给自己用的工具能实现需求即可,不用为了灵活性搞的太复杂。

版本配置选择逻辑

有了上述规则后,就需要确定该使用哪个版本的配置文件。

假设项目刚开始 1.0 版本,此时组件有一些默认值设置。后期增加了新的配置,可以直接在 1.0 版本中新增,也可以创建一个和代码版本号对应的新配置文件进行维护。前一种方式操作简单,后一种方式的配置也是文档,可以清晰的展示出当前版本可以配置的参数。

当项目有不兼容的版本改动时,一定要创建新的配置文件,假设发展到2.5版本时,存在下面几个版本配置:

  1. mybatis-mapper-v1.0.properties
  2. mybatis-mapper-v1.1.properties
  3. mybatis-mapper-v2.0.properties
  4. mybatis-mapper-v2.5.properties

某个用户从 1.0 升级到 2.5 时,发现有个默认 true 的配置变成了 false ,此时如果组件支持 用户配置 ,可以直接在里面配置为 true ,如果有版本配置,就可以指定要使用的版本配置,此时指定 mapper.version=v1.0 ,就会让 1.0 的配置优先级更高,如果想用 2.0 以前的配置,配置为 mapper.version=v1.9 时会使用 1.1 的配置,当指定的版本号在两个版本区间时,向下选择低版本。

选择之外的其他版本,按照版本从高到低的优先级进行获取,这种方式可以保证新版本的代码在运行时不至于找不到新的配置参数。

代码实现

当前版本配置的抽象类中,提供了下面两个抽象方法:

/**
 * 获取配置文件名前缀
 *
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值