COLA实践代码

2024-06-09  本文已影响0人  言午日尧耳总

COLA实践代码

# 下载代码
git clone https://gitee.com/XuXiaoCong/cola-springboot-demo.git

# 进入目录
cd cola-springboot-demo

# 下载依赖
mvn clean package

# 启动,使用Java17
java -jar start/target/start.jar

COLA模块结构

module.png
模块 层级 作用 对比三层架构<br />(Controller、Service、Dao)
adapter 适配层 一般放MVC的控制器,或其他路由和适配 Controller
client 接口层 服务接口 相当于IService接口
app 应用层 client层的接口实现,业务代码 相当于ServiceImpl
domain 领域层 实体对象,充血模型,用面相对象设计
infrastructure 基础设施层 全局设置、数据库操作、远程调用、转换器等 持久化层(DAO),Mapper、数据对象
start 应用入口 Application.java,application.yml

功能

image.png

目录结构划分

image.png image.png

模块介绍

start

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

adapter

包名 功能 备注 命名
web 处理页面请求的Controller Mvc的控制器 xxController
wireless/mobile 无线端/手机端的适配 很少不使用
wap wap端的适配 很少不使用

client

包名 功能 备注 命名
api 服务接口 interface xxServiceI
dto api的入参、出参 可引用"cola-component-dto"组件 入参(读):xxQry,即Query<br />入参(写):xxCmd,即Command<br />出参:xxCO,即Customer Object

app

包名 功能 备注 命名
executor 执行器,业务代码 根据读写数据分为Query和Command。Query可直接调用infrastructure的Mapper,Command一般不直接调用Mapper,而是使用Gateway操作 读数据类名:xxQryExe<br />写数据类名:xxCmdExe,作者习惯写成xxExe<br />同步方法:execute(xx)<br />异步方法:asyncExecute(xx)
consumer 消费者 消息队列消费者 xxConsumer
scheduler 定时任务 - xxScheduler

domain

包名 功能 备注 命名
model 领域对象,里面放充血模型 单一对象的操作放在领域对象中<br />如:用户改名、改密码 -
ability 领域能力,包括DomainService 多个对象间的操作<br />如:两个账户间的转账 xxDomainService
gateway 网关接口,解耦利器 解耦底层数据 xxGateway

infrastructure

包名 功能 备注 命名
config 全局设置 全局异常、环境变量参数、@Configuration注解的配置等 -
mapper 数据库CRUD封装 如mybatis实现的数据库操作 xxMapper
mapper.dataobject 数据对象 数据库对象,使用贫血模型(POJO) 关系型:xxDO,即DataObject<br />Mongo:xxDoc,即Document
gatewayimpl 网关实现 调用mapper实现数据交互<br />RPC/Http对接其他系统Api,实现数据交互 xxGatewayImpl
convertor 转换器 数据对象(DO)、领域对象(Entity)、用户对象(CO)、数据转换对象(DTO)等各种"O"之间的转换<br />使用"Convertor"结尾 xxConvertor

参考文章

上一篇 下一篇

猜你喜欢

热点阅读