COLA README

The project's README from github.com/alibaba/COLA. As one markdown file: README.md.

🥤 COLA v5

Fast CI Multiply Java versions CI License Java support Maven Central GitHub Releases GitHub Stars GitHub Forks user repos GitHub issues GitHub Contributors gitpod: Ready to Code

COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。 目前COLA已经发展到COLA v5。

如何用Harness工程,使用COLA作为AI友好的应用架构,请阅读《Harness工程实战》

  • 想了解更多COLA信息,请关注微信公众号:

qrcode

COLA分为两个部分,COLA架构和COLA组件。

一、COLA架构

COLA 概述

架构的意义 就是 要素结构:

而 应用架构的意义 就在于

arch why

COLA架构就是为此而生,其核心职责就是定义良好的应用结构,提供最佳应用架构的最佳实践。通过不断探索,我们发现良好的分层结构,良好的包结构定义,可以帮助我们治理混乱不堪的业务应用系统。

cure

经过多次迭代,我们定义出了相对稳定、可靠的应用架构:

cola arch

COLA Archetypes

好的应用架构,都遵循一些共同模式,不管是六边形架构、洋葱圈架构、整洁架构、还是COLA架构,都提倡以业务为核心,解耦外部依赖,分离业务复杂度和技术复杂度等。

COLA架构区别于这些架构的地方,在于除了思想之外,我们还提供了可落地的工具和实践指导。

为了能够快速创建满足COLA架构的应用,我们提供了两个archetype,位于cola-archetypes目录下:

  1. cola-archetype-service:用来创建纯后端服务的archetype。
  2. cola-archetype-web:用来创建adapter和后端服务一体的web应用archetype。

二、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 测试容器组件 无

三、如何使用COLA

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=5.0.0

命令执行成功的话,会看到如下的应用代码结构:

demo struture

2. 运行应用

如果要生成不是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=5.0.0

版本迭代

5.0.0 版本

  1. 支持jdk17和SpringBoot 3.x
  2. 增加cola-archetype-light,支持新的基于package轻量级分层架构
  3. 增加cola-component-unittest组件,支持新的单元测试
  4. 增强cola-component-test-container组件,支持Junit5的Extension

4.0.0 版本

https://blog.csdn.net/significantfrank/article/details/110934799

3.1.0 版本

https://blog.csdn.net/significantfrank/article/details/109529311

  1. 进一步简化了cola-core,只保留了扩展能力。
  2. 将exception从cola-core移入到cola-common。
  3. 对archetype中的分包逻辑进行重构,改成按照domain做划分。
  4. 将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 (alibaba/COLA)

Searching Database…

13.1K ·GitHub
这是什么?COLA(Clean Object-oriented & Layered Architecture)是阿里巴巴出品的一个 Java 项目,为业务应用提供整洁的分层结构,把复杂度控制在可控范围内。
那它是我用来搭建应用的框架,还是只是一种架构风格?它是一个由两部分组成的框架:一部分是 Maven 原型,可以生成一个现成的 COLA 应用;另一部分是可复用的 cola-components,涵盖 DTO、异常、状态机等组件。
我怎么用它创建并运行一个新项目?先用 Maven 原型生成一个项目,在项目里运行 mvn install,再到 start 目录里运行 mvn spring-boot:run——项目里已经预先接好了一个示例 REST 接口。
运行它对环境有什么要求?只需要 Java 和 Maven:COLA v5 面向 JDK 17,基于 Spring Boot 3.x 构建。
这些原型能生成什么样的应用?cola-archetype-service 生成的是纯后端服务;cola-archetype-web 把适配层和后端放进同一个 Web 应用;v5.0 新增了采用轻量级包结构分层的 cola-archetype-light。
它自带哪些现成的组件?cola-components 提供带分页的 DTO、BizException/SysException 异常格式、状态机、由 Spring 管理的领域实体、catch-and-log 启动器、扩展点,以及一个测试容器。
5 版本有什么新东西?v5 增加了对 JDK 17 和 Spring Boot 3.x 的支持,新增了一个轻量级包结构分层的原型 cola-archetype-light,新增了 cola-component-unittest 组件,并在 test-container 组件中加入了对 JUnit 5 Extension 的支持。
刚生成的应用真的能开箱即跑吗?可以——脚手架已经实现了一个简单的 REST 请求,运行 mvn spring-boot:run 之后,在浏览器里打开这个接口就能看到 Spring Boot 成功启动。
我不采用整套架构,只单独用这些组件可以吗?可以。这些组件单独放在 cola-components 里,而且大部分不声明任何依赖(只有 catchlog-starter 会引入 exception 和 dto 组件)。
Creator
alibaba
Size
3.7 MB
Stars
13.1K
Age
8y
Commits · 90 Days