一、概览
枚举作为 Java 5 的重要特征,相信大家并不陌生,但在实际开发过程中,当 name 和 ordrial 发生变化时, 如果处理不当非常容易引起系统bug。这种兼容性bug非常难以定位,需要从框架层次进行避免,而非仅靠开发人员的主观意识。
1.1 背景
枚举很好用,特别是提供的 name 和 ordrial 特性,但这点对重构造成了一定影响,比如:
- 某个枚举值业务语义发生变化,需要将其进行 rename 操作,以更好的表达新业务语义
- 新增、删除或者为了展示调整了枚举定义顺序
这些在业务开发中非常常见,使用 IDE 的 refactor 功能可以快速且准确的完成重构工作。但,如果系统将这些暴露出去或者存储到数据库等存储引擎就变得非常麻烦,不管是 name 还是 ordrial 的变更都会产生兼容性问题。
对此,最常见的解决方案便是放弃使用 name 和 ordrial,转而使用控制能力更强的 code。
1.2 目标
提供一组工具,以方便的基于 code 使用枚举,快速完成对现有框架的集成:
- 完成与 Spring MVC 的集成,基于 code 使用枚举;加强返回值,以对象的方式进行返回,信息包括 code、name、description
- 提供统一的枚举字典,自动扫描系统中的枚举并将其以 restful 的方式暴露给前端
- 使用 code 进行数据存储操作,避免重构的影响