Skip to content
master
Switch branches/tags
Code

🥤 COLA 4.0

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

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

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 Components

此外,我们还æ??供了一些é?žå¸¸æœ‰ç”¨çš„通用组件,这些组件å?¯ä»¥å¸®åŠ©æˆ‘ä»¬æ??å?‡ç ”å?‘效率。

这些功能组件被收拢在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

关于COLA的更多信�,请关注微信公众�:

qrcode_60.jpg

如果你有技术热情,对阿里有兴趣,�以email:fulan.zjf@alibaba-inc.com