- 使用COLA脚手架初始化项目
- 实战代码:https://gitee.com/XuXiaoCong/cola-springboot-demo
- COLA项目地址:https://github.com/alibaba/COLA
- BiliBili视频
创建项目
使用COLA脚手架(Maven)创建COLA项目
- DgroupId: 公司/组织名称
- DartifactId:项目名称
- Dversion:版本号
- Dpackage:包路径
# 先确认maven正确安装 mvn --version # Shell(Linux) mvn archetype:generate \ -DgroupId=com.xxc \ -DartifactId=cola-springboot-demo \ -Dversion=0.0.1 \ -Dpackage=com.xxc.demo \ -DarchetypeArtifactId=cola-framework-archetype-web \ -DarchetypeGroupId=com.alibaba.cola \ -DarchetypeVersion=5.0.0 # CMD(Windows)使用"^"当做换行符 mvn archetype:generate ^ -DgroupId=com.xxc ^ -DartifactId=cola-springboot-demo ^ -Dversion=0.0.1 ^ -Dpackage=com.xxc.demo ^ -DarchetypeArtifactId=cola-framework-archetype-web ^ -DarchetypeGroupId=com.alibaba.cola ^ -DarchetypeVersion=5.0.0 # PowerShell(Windows)使用"`"当做换行符,并且参数使用单引号包裹 mvn archetype:generate ` -DgroupId='com.xxc' ` -DartifactId='cola-springboot-demo' ` -Dversion='0.0.1' ` -Dpackage='com.xxc.demo' ` -DarchetypeArtifactId='cola-framework-archetype-web' ` -DarchetypeGroupId='com.alibaba.cola' ` -DarchetypeVersion='5.0.0'
清理生成代码
清理pom.xml文件(所有模块)
更新Java、SpringBoot依赖的版本
- java:17
- SpringBoot: 3.3.0/3.1.12
除了SpringBoot、Cola有关的依赖,其他全部删除
- 生成代码的依赖版本过于老旧,为了方便先全部删除,后面再自行添加需要的组件
清理代码
- 删除所有实例代码、单元测试,只保留基础目录
- java使用"package-info.java"占位
- 目录使用".gitkeep"文件占位
cola-springboot-demo ├─ .gitignore ├─ cola-springboot-demo-adapter │ ├─ pom.xml │ └─ src │ └─ main │ └─ java │ └─ com │ └─ xxc │ └─ demo │ └─ package-info.java ├─ cola-springboot-demo-app │ ├─ pom.xml │ └─ src │ └─ main │ └─ java │ └─ com │ └─ xxc │ └─ demo │ └─ package-info.java ├─ cola-springboot-demo-client │ ├─ pom.xml │ └─ src │ └─ main │ └─ java │ └─ com │ └─ xxc │ └─ demo │ └─ package-info.java ├─ cola-springboot-demo-domain │ ├─ pom.xml │ └─ src │ └─ main │ └─ java │ └─ com │ └─ xxc │ └─ demo │ └─ domain │ └─ package-info.java ├─ cola-springboot-demo-infrastructure │ ├─ pom.xml │ └─ src │ └─ main │ ├─ java │ │ └─ com │ │ └─ xxc │ │ └─ demo │ │ ├─ config │ │ │ └─ package-info.java │ │ └─ package-info.java │ └─ resources │ ├─ logback-spring.xml │ └─ mybatis │ └─ .gitkeep ├─ pom.xml └─ start ├─ pom.xml └─ src └─ main ├─ java │ └─ com │ └─ xxc │ └─ demo │ └─ Application.java └─ resources ├─ application.properties └─ logback-spring.xml
验证是否有遗漏
- 注意"ERROR"级别的错误,可能是没删完整,删除对应文件即可
mvn clean install
Maven依赖
版本管理
- 在根目录的pom.xml中,使用"dependencyManagement"节点进行版本管理
在使用的模块才真正引入依赖
Mybatis-plus
数据库操作
<properties> <mybatis-plus-starter.version>3.5.6</mybatis-plus-starter.version> <mysql-connector.version>8.3.0</mysql-connector.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus-starter.version}</version> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>${mysql-connector.version}</version> <scope>runtime</scope> </dependency> </dependencies> </dependencyManagement>
在SpringBoot3.2/3.3使用mybatis报错
- 报错信息:"Invalid value type for attribute 'factoryBeanObjectType': java.lang.String"
- 解决方法:https://developer.aliyun.com/article/1395691
如果怕麻烦,SpringBoot版本改为3.1.X
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <!-- 排除mybatis --> <exclusions> <exclusion> <artifactId>mybatis-spring</artifactId> <groupId>org.mybatis</groupId> </exclusion> </exclusions> </dependency> <!-- 自定义mybatis版本 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>3.0.3</version> </dependency>
MapStruct
- 用于对象的映射,主要在infrastructure的convertor使用
由于MapStruct的特殊性,需要修改plugin
<properties> <mapstruct.version>1.5.5.Final</mapstruct.version> <mapstruct.binding>0.2.0</mapstruct.binding> <projectlombok.version>1.18.32</projectlombok.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>${mapstruct.version}</version> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <!-- MapStruct依赖 --> <annotationProcessorPaths> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${mapstruct.version}</version> </path> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${projectlombok.version}</version> </path> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>${mapstruct.binding}</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </pluginManagement> </build>
Swagger
- 使用Swagger显示文档
spring-boot-starter-validation是Spring
<properties> <springdoc.version>2.5.0</springdoc.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>${springdoc.version}</version> </dependency> </dependencies> </dependencyManagement>
打包配置
start层,pom.xml增加打包插件
<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>
- 配置后可打包jar文件,使用java命令运行
# 打包jar文件
mvn clean package
# 运行jar文件
java -jar start/target/start.jar
填充代码
- 代码下载地址:https://gitee.com/XuXiaoCong/cola-springboot-demo
代码中,大部分先使用领域分包,再使用功能分包
- 领域分包指,用户(User)、订单(Order)、Product(商品)等大方向区分
- 功能分包指,如下结构图中的"executor","consumer","scheduler"等功能
不使用领域分包的例外
- Adapter层:控制器包含多个接口,本身按领域区分了
- Infrastructure层中的"config":因为是全局设置,无法按领域划分
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。