# dev-template **Repository Path**: RicheFactory/dev-template ## Basic Information - **Project Name**: dev-template - **Description**: 一个基于 Spring Boot + Dubbo + MyBatis-Plus 的多模块 Maven 学习模板工程,用于快速搭建微服务项目。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-10 - **Last Updated**: 2026-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dev-template 一个基于 Spring Boot + Dubbo + MyBatis-Plus 的多模块 Maven 学习模板工程,用于快速搭建微服务项目。 ## 技术栈 | 分类 | 技术 | 版本 | |------|------|------| | 基础框架 | Spring Boot | 2.3.2.RELEASE | | 持久层 | MyBatis-Plus | 3.0.5 | | RPC 框架 | Apache Dubbo | 2.7.3 | | 服务注册中心 | Apache ZooKeeper | via dubbo-dependencies-zookeeper | | 数据库 | MySQL | 8.0.x | | JSON 处理 | Fastjson | 1.2.70 | | 链路监控 | Dianping Cat | 3.1.0 | | 代码生成 | Lombok | 1.18.12 | | 工具库 | Apache Commons Lang3 / Collections | 3.9 / 3.2.2 | | Java 版本 | JDK 8 | - | ## 项目结构 ``` dev-template/ ├── pom.xml # 父 POM(packaging: pom) ├── .gitignore ├── .mvn/ # Maven Wrapper │ ├── dev-template-rpc/ # RPC 共享模块 │ └── src/main/java/com/riche/template/ │ ├── c2s/ # Client-to-Server DTO(客户端请求参数) │ ├── s2c/ # Server-to-Client DTO(服务端响应数据) │ └── utils/ # RPC 层通用工具类 │ └── dev-template-service/ # 业务服务主模块 ├── src/main/java/com/riche/template/ │ ├── Application.java # 启动类,@EnableDubbo │ ├── config/ # 配置类 │ │ ├── MyBatisPlusConfig.java # MyBatis-Plus 全局配置 + SQL 性能拦截器 │ │ └── handler/ │ │ └── MyMetaObjectHandler.java # 自动填充 gmtCreate / gmtModified │ ├── mapper/ │ │ ├── domain/ # 实体类(DO) │ │ └── *Mapper.java # Mapper 接口(继承 BaseMapper) │ ├── service/ # 服务层 │ │ ├── I*Service.java # 服务接口 │ │ └── impl/ # 服务实现 │ ├── controller/ # 控制层(示例) │ ├── ruler/ # 业务规则类 │ ├── task/ # 定时任务 │ ├── thread/ # 线程相关工具 │ └── utils/ │ └── R.java # 统一响应封装 │ └── src/main/resources/ ├── application.yml # 主配置文件 └── META-INF/ └── app.properties # 应用元数据 ``` ## 模块说明 ### dev-template-rpc RPC 共享模块,存放服务端与消费端共用的数据对象和工具类,避免循环依赖。 - `c2s/` — 客户端向服务端发送的请求参数 DTO - `s2c/` — 服务端返回给客户端的响应数据 DTO - `utils/` — 通用工具类 ### dev-template-service 业务服务主模块,包含完整的 Spring Boot Web 应用。 - `mapper/` — 数据持久层,基于 MyBatis-Plus - `service/` — 业务服务层,接口 + 实现分离 - `controller/` — 控制器层(可按需添加) - `config/` — 框架配置类 - `ruler/` — 业务规则校验 - `task/` — 定时任务 - `thread/` — 线程池及并发工具 - `utils/R.java` — 统一 API 响应格式 ## 统一响应格式 所有 API 统一返回 `R.java` 封装的响应体: ```json { "success": true, "code": 200, "message": "操作成功", "data": { ... } } ``` 业务异常通过 `R.error(int code, String message)` 返回,前端按 `code` 做分支处理。 ## 逻辑删除 MyBatis-Plus 全局配置了逻辑删除,字段名为 `isuse`: - 删除时自动更新 `isuse = 1` - 查询时自动追加 `isuse = 0` 条件 - 无需手动处理删除逻辑 ## 快速开始 ### 前置依赖 - JDK 8+ - Maven 3.6+ - MySQL 8.0+ - ZooKeeper(Dubbo 服务注册) ### 1. 初始化数据库 创建数据库并执行建表 SQL(表结构需与 `domain/` 中的实体类对应)。 ### 2. 修改配置 编辑 `dev-template-service/src/main/resources/application.yml` 中的数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/你的库名?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: 你的用户名 password: 你的密码 ``` Dubbo 使用 ZooKeeper 作为注册中心,启动 ZooKeeper 后无需额外配置。 ### 3. 编译打包 ```bash mvn clean package -DskipTests ``` ### 4. 启动服务 ```bash java -jar dev-template-service/target/dev-template-service-1.0.jar ``` 服务默认启动在 `0.0.0.0:8080`。 ## 常用开发命令 ```bash # 编译所有模块 mvn clean compile # 打包(跳过单元测试) mvn clean package -DskipTests # 跳过测试打包 mvn clean install -DskipTests # 仅编译指定模块 mvn clean compile -pl dev-template-service -am ``` ## 注意事项 1. **配置文件隔离**:敏感配置(如数据库密码)建议使用 `application-local.yml` 本地覆盖文件(已加入 `.gitignore`),避免提交到仓库。 2. **Apollo 配置**:项目中已预留 Apollo 配置中心接入,开箱即用,取消 `application.yml` 中的注释即可。 3. **Redis 分布式 Session**:已预留配置,启用前需先配置并启动 Redis。 4. **Cat 监控**:客户端配置文件 `cat/client.conf` 未提交到仓库,首次使用需自行配置。 5. **Lombok**:IDE 需安装 Lombok 插件(IDEA/Eclipse 均支持),否则实体类部分方法不会自动生成。 ## 扩展说明 ### 接入 Apollo 配置中心 1. 取消 `application.yml` 中 Apollo 相关配置的注释 2. 修改 `apollo.meta` 和 `apollo.config-service` 为你的 Apollo 地址 3. 确保各环境启动时能访问 Apollo 服务器 ### 启用 Redis Session 1. 启动 Redis 服务 2. 取消 `application.yml` 中 `spring.session.store-type: redis` 的注释 ### 添加新的模块 1. 在父 POM `` 中添加新模块名 2. 在父目录创建模块文件夹,参照已有模块结构 3. 新模块的 `pom.xml` 添加 `` 引用 `dev-template`