# gradle-springcloud
**Repository Path**: gitlicl/gradle-springcloud
## Basic Information
- **Project Name**: gradle-springcloud
- **Description**: 此项目是自学项目
基于Spring cloud 构建一个套完整的架构,但不包含任何业务,仅是框架搭建,业务可以自行开发的项目
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-12-02
- **Last Updated**: 2026-04-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Spring Cloud 微服务框架
> 🌱 基于 Spring Cloud 构建的一套完整的微服务架构,不包含业务逻辑,仅为框架搭建,可作为业务开发的脚手架项目
[](https://spring.io/projects/spring-boot)
[](https://spring.io/projects/spring-cloud)
[](https://openjdk.java.net/)
[](https://gradle.org/)
## 📋 目录
- [项目概述](#项目概述)
- [架构设计](#架构设计)
- [技术栈](#技术栈)
- [模块说明](#模块说明)
- [快速开始](#快速开始)
- [分支学习路径](#分支学习路径)
- [配置说明](#配置说明)
- [常见问题](#常见问题)
## 项目概述
本项目是一个完整的微服务架构示例,基于 Spring Cloud 技术栈构建。项目不包含具体业务逻辑,专注于框架搭建和技术整合,可作为企业级微服务项目的起始模板。
项目遵循领域驱动设计(DDD)思想,采用前后端分离架构,支持多环境部署,内置了监控、链路追踪、日志收集等运维支撑体系。
## 架构设计
### 微服务组件对比
| 功能 | Spring Cloud 组件 | Spring Cloud Alibaba 对应组件 | 区别与说明 |
|------|-------------------|------------------------------|------------|
| 🏛️ 注册中心 | Eureka / Consul / Zookeeper | 🟢 Nacos | Alibaba 集成配置+注册一体化,动态刷新方便 |
| 📁 配置中心 | Spring Cloud Config | 🟢 Nacos Config | 内置配置刷新、灰度、命名空间,易用性更高 |
| 🔄 服务调用 | OpenFeign / RestTemplate | ✅ 同样支持 Feign | 完全兼容 |
| 🚪 服务网关 | Spring Cloud Gateway / Zuul | ✅ 同样可用 Gateway | 一般共用官方 Gateway |
| ⚖️ 负载均衡 | Ribbon / Spring Cloud LoadBalancer | ✅ 同样可用 | Alibaba 不额外扩展 |
| 🛡️ 熔断限流 | Resilience4j(早期 Hystrix) | 🟢 Sentinel | Sentinel 更强大:限流、熔断、热点参数、实时监控 |
| 📨 消息队列 | RabbitMQ / Kafka | 🟢 RocketMQ | 与阿里中间件深度集成 |
| 🔗 分布式事务 | 无(需第三方) | 🟢 Seata | 提供 AT / TCC / Saga 支持 |
| 🚌 服务总线 | Spring Cloud Bus | ✅ Nacos + RocketMQ 可替代 | 更灵活 |
| 🔍 链路追踪 | Sleuth + Zipkin / OpenTelemetry | ✅ 同样可集成 | 可用 Zipkin/OTEL 兼容方案 |
## 技术栈
### 核心框架
| 技术 | 版本 | 说明 |
|------|------|------|
| 🏗️ Gradle | 8.14.1 | 构建工具 |
| 🍃 Spring Boot | 3.5.8 | 应用框架 |
| ☁️ Spring Cloud | 2025.0.0 | 微服务框架 |
| 🔍 Spring Boot Actuator | 3.5.8 | 健康检查监控 |
### 微服务组件
| 组件 | 版本 | 说明 |
|------|------|------|
| 🏛️ Eureka Server | 最新 | 注册中心server |
| 🏛️ Eureka Client | 最新 | 注册中心client |
| 📁 Config Server | 最新 | 配置中心server |
| 📁 Config Client | 最新 | 配置中心client |
| 🔄 OpenFeign | 最新 | 声明式的 Web 服务客户端 |
| 🚪 Spring Cloud Gateway | 最新 | API 网关 |
| 🔐 Spring Security | 最新 | 安全认证框架 |
| ⚖️ Spring Cloud LoadBalancer | 最新 | 本地负载均衡 |
| 🛡️ Resilience4j | 最新 | 熔断器 |
### 数据存储与消息
| 技术 | 版本 | 说明 |
|------|------|------|
| 🗃️ PostgreSQL | 42.7.7 | 关系型数据库 |
| 🔴 Redis | 7.2.5 | 缓存与消息存储 |
| 🐰 RabbitMQ | 最新 | 消息队列 |
| 🔄 Seata | 最新 | 分布式事务 |
### 监控与日志
| 技术 | 版本 | 说明 |
|------|------|------|
| 📊 Micrometer | 1.3.6 | 应用监控指标 |
| 📈 OpenTelemetry | 最新 | 链路追踪 |
| 📊 Elasticsearch | 8.17.0 | 日志存储与搜索 |
| 📊 Kibana | 8.17.0 | 日志可视化 |
| 📊 Filebeat | 8.17.0 | 日志收集 |
| 📊 Zipkin | 最新 | 分布式链路追踪 |
| 🖥️ Spring Boot Admin | 3.5.6 | 应用监控管理 |
### 工具库
| 技术 | 版本 | 说明 |
|------|------|------|
| 🛠️ Lombok | 1.18.34 | 代码简化工具 |
| 📝 Jackson | 2.17.3 | JSON 序列化/反序列化 |
| 🛠️ Commons Lang3 | 3.12.0 | Java 常用工具包 |
| 🛠️ Hutool Core | 5.8.34 | Java 工具集 |
| 💾 HikariCP | 6.2.0 | 数据库连接池 |
| 📄 Aspose Words | 最新 | 文档处理工具 |
## 模块说明
| 服务名称 | 端口号 | 功能描述 |
|----------|--------|----------|
| 🏛️ gradle-center | 30000 | 注册中心 |
| 📁 gradle-config | 30001 | 配置中心 |
| 🚪 gradle-gateway | 30002 | 服务网关 |
| 👥 gradle-admin | 33001 | 用户管理服务 |
| 🔐 gradle-auth | 33005 | 认证中心 |
| 🎯 gradle-jp | 33006 | 业务示例服务(Redis/RabbitMQ/Seata测试) |
| 🏗️ gradle-base | 33007 | 基础服务(字典查询等) |
| 📊 gradle-spring-boot-admin | 50000 | 应用监控管理 |
### 公共模块
| 模块名称 | 功能描述 |
|----------|----------|
| 🔧 gradle-common-core | 公共核心组件 |
| 💾 gradle-common-mybatis-starter | MyBatis 集成启动器 |
| 🌐 gradle-common-feign-starter | Feign 集成启动器 |
| 🔴 gradle-common-redis-starter | Redis 集成启动器 |
| 🐰 gradle-common-rabbit-mq-starter | RabbitMQ 集成启动器 |
| 🔗 gradle-common-seata-starter | Seata 分布式事务启动器 |
| 📊 gradle-common-spring-boot-admin | Spring Boot Admin 集成 |
## 快速开始
### 环境要求
- JDK 17+
- Gradle 7.6.2+
- Redis 7.0+
- PostgreSQL 14+
- RabbitMQ 3.9+
### 启动步骤
1. **克隆项目**
```bash
git clone [项目地址]
cd gradle-springcloud
```
2. **配置修改**
- 修改 `gradle-config` 模块中的配置文件,指向你的配置地址
- 根据实际环境调整数据库、Redis等连接信息
3. **构建项目**
```bash
./gradlew build -x test
```
4. **启动服务**
- 按依赖顺序启动:注册中心 → 配置中心 → 网关 → 业务服务
5. **访问应用**
- 网关入口: http://localhost:30002
- Spring Boot Admin: http://localhost:50000
### 启动参数
```bash
-Dfile.encoding=UTF-8
-javaagent:opentelemetry/opentelemetry-javaagent.jar
-Dspring.profiles.active=dev
-Dotel.service.name=gradle-center
-Dotel.javaagent.logging=none
-Dsnowflake.worker-id=1
-Dsnowflake.datacenter-id=1
-Dsnowflake.enabled=true
```
#### 参数说明
| 参数 | 说明 |
|------|------|
| `-Dspring.profiles.active=dev` | 指定使用 `dev` 环境配置 |
| `-javaagent:opentelemetry-javaagent.jar` | 启用 OpenTelemetry 链路追踪 |
| `-Dotel.service.name=my-service` | 设置 OpenTelemetry 服务名称 |
| `--Dotel.javaagent.logging=none` | 设置 javaagent 不打印日志 |
| `--snowflake.worker-id=1 --snowflake.datacenter-id=1 --snowflake.enabled=true` | 设置 雪花算法配置 |
## 分支学习路径
1. `feature-gateway-openFeign`: 集成 gateway 与 feign 调用的初始化
2. `feature-openFeign-config-server`: 集成 配置中心
3. `feature-openFeign-resilience4j`: 集成 resilience4j
4. `feature-version-manager-update`: 版本管理方式替换为 toml 文件
5. `feature-sql-server`: 集成 SQL Server 数据库,mybatis 插件,简单的调用测试
6. `feature-openTelemetry`: 集成 openTelemetry 统一日志 trace
7. `feature-08-spring-boot-admin`: 集成 spring boot admin
8. `feature-09-openFeign-resilience4j`: openfeign 和 resilience4j 整合优化
9. `feature-10-okhttp3`: 集成 okhttp3
10. `feature-11-knife4j`: 集成 knife4j 文档
11. `feature-12-apache-camel`: 集成 Apache Camel(开发中)
12. `feature-13-spring-security`: 集成 security 安全框架
13. `feature-14-spring-security-auth`: 拆分认证服务
14. `feature-15-jp`: 开发 demo 业务测试,完成 gateway 统一认证,集成 pgSQL,redis 集群,mybatis 插件
15. `feature-16-log`: 日志优化
16. `feature-17-mq`: 集成 MQ 多数据源
17. `feature-18-seata`: 集成 seata 分布式事务
18. `feature-22-dockerfile`: Docker 容器化部署
## 配置说明
### 配置中心
项目使用 Spring Cloud Config 作为配置中心,支持:
- 多环境配置(dev/test/prod)
- 配置动态刷新
- 配置加密(Jasypt)
- Git 仓库配置存储
### 监控配置
项目集成了多种监控方案:
- Spring Boot Admin: 应用状态监控
- Micrometer + Prometheus: 指标收集(暂未实现)
- OpenTelemetry + Zipkin: 链路追踪
- ELK Stack: 日志收集与分析
## 常见问题
### 问题1: Error running XXXApplication Command line is too long
**解决方案:**
在项目的 `.idea/workspace.xml` 文件中,找到 ``,添加以下行:
```xml
```
### 问题2: 依赖冲突
**解决方案:**
- 使用 `./gradlew dependencies` 检查依赖树
- 使用 `./gradlew dependencyInsight --dependency [dependency-name]` 查看特定依赖
- 确保使用 BOM 管理版本
### 问题3: 配置不生效
**解决方案:**
- 检查 Bootstrap 配置是否正确
- 确认配置中心服务已启动
- 验证 Git 仓库权限和路径
## 许可证
本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。
---