The Wayback Machine - https://web.archive.org/web/20220630175044/https://github.com/alibaba/COLA
Skip to content

alibaba/COLA

master
Switch branches/tags
Code

🥤 COLA 4.0

Build Status Maven Central GitHub release Java support
License GitHub Stars GitHub Forks GitHub issues

COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整�?�?��?�对象分层架构�?。 目�?COLA已�?�?�展到COLA 4.0。

想了解更多COLA信�?�,请关注微信公众�?�:

qrcode_60.jpg

想了解更多COLA背�?�的故事,请支�?我的新书《程�?员的底层�?维》

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

一�?COLA架构

COLA 概述

架构的�?义 就是 �?素结构:

  • �?ç´  是 组�?架构的�?�?元素;
  • 结构 是 �?素之间的关系。

而 应用架构的�?义 就在于

  • 定义一套良好的结构;
  • 治�?�应用�?�?�度,�?低系统熵值;
  • 从�?心所欲的混乱状�?,走�?�井井有�?�的有�?状�?。

archWhy

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

cure

�?过多次迭代,我们定义出了相对稳定�?�?��?�的应用架构:COLA 4.0

cola

COLA Archetype

好的应用架构,都�?�循一些共�?�模�?,�?管是六边形架构�?洋葱圈架构�?整�?架构�?还是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格�?,包括分页 1.0.0 无
cola-component-exception 定义了异常格�?,
主�?有BizException和SysException
1.0.0 æ— 
cola-component-statemachine 状�?机组件 1.0.0 无
cola-component-domain-starter Spring托管的领域实体组件 1.0.0 无
cola-component-catchlog-starter 异常处�?�和日志组件 1.0.0 exception
�?dto组件
cola-component-extension-starter 扩展点组件 1.0.0 无
cola-component-test-container 测试容器组件 1.0.0 无

三�?如何使用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=4.0.1

命令执行�?功的�?,会看到如下的应用代�?结构:

demo

注:也�?�以使用阿里云的应用生�?器:https://start.aliyun.com/bootstrap.html 生�?cola应用。

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.0.1

版本迭代

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