0 简介
Clean Object-Oriented and Layered Architecture,整洁面向对象分层架构。 目前COLA已经发展到COLA v4。
COLA两部分:
- COLA架构
- COLA组件
1 COLA架构
1.1 COLA 概述
架构的意义
就是要素结构:
- 要素,组成架构的重要元素
- 结构,要素之间的关系
应用架构的意义
- 定义一套良好的结构
- 治理应用复杂度,降低系统熵值
- 从随心所欲,走向井井有条
COLA架构为此而生,核心职责就是定义良好的应用结构,提供最佳应用架构的最佳实践。实践证明,良好的分层结构,良好的包结构定义,有助治理混乱不堪的业务应用系统。
如今终于有了相对稳定、可靠的应用架构:COLA v4
1.2 COLA Archetypes
好的应用架构,都遵循一些共同模式,不管六边形架构、洋葱圈架构、整洁架构、COLA架构,都提倡:
- 业务为核心
- 解耦外部依赖
- 分离业务复杂度和技术复杂度
- ...
COLA架构独到除了思想,还提供可落地的工具和实践指导。
为快速创建COLA架构应用,提供两个archetype
,位于cola-archetypes
目录:
cola-archetype-service
:创建纯后端服务的archetype
cola-archetype-web
:创建adapter
和后端服务一体的web
应用archetype
2 COLA组件
cola-components
目录下。已沉淀组件:
组件名称 | 功能 | 依赖 |
---|---|---|
cola-component-dto |
定义了DTO 格式,包括分页 |
无 |
cola-component-exception |
定义了异常格式, 主要有BizException 和SysException |
无 |
cola-component-statemachine |
状态机组件 | 无 |
cola-component-domain-starter |
Spring 托管的领域实体组件 |
无 |
cola-component-catchlog-starter |
异常处理和日志组件 | exception 、dto 组件 |
cola-component-extension-starter |
扩展点组件 | 无 |
cola-component-test-container |
测试容器组件 | 无 |
3 使用
3.1 创建应用
执行命令:
mvn archetype:generate \
-DgroupId=com.alibaba.cola.demo.web \
-DartifactId=demo-web \
-Dversion=1.0.0-SNAPSHOT \
-Dpackage=com.alibaba.demo \
-DarchetypeArtifactId=cola-framework-archetype-web \
-DarchetypeGroupId=com.alibaba.cola \
-DarchetypeVersion=4.3.2
看到如下应用代码结构:
3.2 运行应用
- 在
项目
目录下运行mvn install
(如果不想运行测试,可以加上-DskipTests
参数) - 进入
start
目录,执行mvn spring-boot:run
。 运行成功的话,可以看到SpringBoot
启动成功的界面。 - 生成的应用中,已经实现了一个简单的
Rest
请求, http://localhost:8080/helloworld 测试。
生成不是web
工程而是service
工程也类似,执行:
mvn archetype:generate \
-DgroupId=com.alibaba.cola.demo.service \
-DartifactId=demo-service \
-Dversion=1.0.0-SNAPSHOT \
-Dpackage=com.alibaba.demo \
-DarchetypeArtifactId=cola-framework-archetype-service \
-DarchetypeGroupId=com.alibaba.cola \
-DarchetypeVersion=4.3.2
4 版本迭代
4.0.0 版本
https://blog.csdn.net/significantfrank/article/details/110934799
3.1.0 版本
https://blog.csdn.net/significantfrank/article/details/109529311
- 进一步简化
cola-core
,只保留扩展能力 - 将
exception
从cola-core
移入cola-common
- 对
archetype
中的分包逻辑进行重构,改成按照domain
做划分 - 将
cola-archetype-web
中的controller
改名为adapter
,为呼应六边形架构命名
3.0.0 版本
https://blog.csdn.net/significantfrank/article/details/106976804
2.0.0 版本
https://blog.csdn.net/significantfrank/article/details/100074716
1.0.0 版本
https://blog.csdn.net/significantfrank/article/details/85785565
参考
- COLA背后的故事,[《程序员的底层思维》](