系统重构目的
统一规范
- 统一代码格式化,开发规范,rpc规范,日志规范,sql规范,mybatis提示插件,lombok
合理划分架构
- 原来架构设计不合理,层次太多,部署麻烦,容易出错
- 前后端分离
提高系统稳定度
- 提高开发效率
- 提高代码可维护性
新技术,新方法论
- spring boot
- MVC
- DDD
- 微服务
经验,沉淀
- 由一个项目重构如何推广到所有的新老系统
问题,解决
到底如何优雅的使用spring boot?
- 原来第一个使用springboot的项目完全照着xml配置专场beanconfig的,这种做法不提倡
- 多用starter解决问题,能配置的用配置搞定
怎样更好的使用mybatis生成
- 因为我们设计都是沿用先设计数据库 [区别ddd],所以从表生成domain,mapper比较好
- 注释混乱,命名不符合,字段映射问题,写mybaits gennertor扩展
- 目前还有很多缺点[mapper会被覆盖,应该生成通用父类比较好,代码更加简洁]
模块划分api, common, service; service中 web层和service层,业务逻辑要放哪里?
- 所有的业务都写到service层,尽量减少service层次 [其实还是会产生庞大的service]
- controller只做简单的聚合,swagger api定义 [参考DDD application类似]
- 由于定义了一套返回的api类,那service直接返回 XxxResult ? 那service之间的调用就会很麻烦了..[怎么解决]
- 方法内强制 使用 类似Assert 做参数验证[也使用注释] 和 条件验证 ,异常由web层统一处理
各种业务对象如何定义
- dto, domain, query, bo ?
- 因为统一了 从表生成domain,mapper,xml等,所以规范了domain层只做持久化对象,不做业务逻辑,也不提倡修改
引入springboot后,quartz,动态数据源使用比较麻烦,所以会有对quartz,动态数据源的封装,还有excel处理等,分页等封装
image.png沉淀组件之后,可以快速搭建新项目
- 然而,还是要繁琐的建立项目,创建模块,引入自定义的包(怎么解决这个问题)
- 创建maven脚手架
重构改善代码
- 多用组合, 提炼方法,拒绝大类,拒绝无数if嵌套
- 例子: https://www.jianshu.com/p/4e23d7002cbc
- 解决if的问题: 用注册机制处理if问题,化if为类
- 简单的类库推荐:
思考
- 分析现有业务,重构代码
- mvc 还是 ddd ?
网友评论