Skip to content

alibaba/COLA

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

[æ?Žå°?å¹³] #N/A refactor: Catching and Logging,修订å??味é?“
5b50a54

Git stats

Files

Permalink
Failed to load latest commit information.

🥤 COLA v4

Github Workflow Build Status Appveyor Build Status Maven Central GitHub release Java support License GitHub Stars GitHub Forks user repos GitHub issues GitHub Contributors gitpod: Ready to Code

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

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

一�COLA架构

COLA 概述

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

  • è¦?ç´  是 组æˆ?架构的é‡?è¦?元素;
  • 结构 是 è¦?素之间的关系。

而 应用架构的�义 就在于

  • 定义一套良好的结构;
  • æ²»ç?†åº”用å¤?æ?‚度,é™?低系统熵值;
  • 从éš?心所欲的混乱状æ€?,走å?‘井井有æ?¡çš„æœ‰åº?状æ€?。

archWhy

COLA架构就是为此而生,其核心è?Œè´£å°±æ˜¯å®šä¹‰è‰¯å¥½çš„应用结构,æ??供最佳应用架构的最佳实践。通过ä¸?断探索,我们å?‘现良好的分层结构,良好的包结构定义,å?¯ä»¥å¸®åŠ©æˆ‘ä»¬æ²»ç?†æ··ä¹±ä¸?堪的业务应用系统。

cure

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

cola

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=4.3.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.3.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