适配环境:JDK 21 + Maven + Spring Boot 3.2.5 + Spring Cloud 2023.0.1文档说明:纯手把手操作指南,无冗余内容,代码可直接复制使用,支持 Nacos 多项目共用


目录

  1. 文档概述
  2. 前置环境准备
  3. 微服务架构设计
  4. 分步搭建教程(核心)
  5. Nacos 多项目共用说明
  6. 服务启动与功能验证
  7. 标准项目结构
  8. 常见注意事项
  9. 总结

1. 文档概述

1.1 技术栈

  • 开发工具:IDEA 2025.3.3 中文版
  • 基础框架:Spring Boot 3.2.5 + Spring Cloud 2023.0.1
  • 服务治理:Nacos 2.4.3(注册 / 配置中心)
  • 网关:Spring Cloud Gateway
  • 构建工具:Maven
  • JDK 版本:21

1.2 脚手架功能

  • 统一依赖管理(父工程)
  • 公共代码抽离(common 模块)
  • 服务注册发现(Nacos)
  • 统一请求入口(网关)
  • 业务微服务模板(user-service)

2. 前置环境准备

  1. IDEA 2025.3.3 中文版(已安装)
  2. JDK 21(已在 IDEA 中完成配置)
  3. Nacos 2.4.3(已启动,支持多项目共用)
  4. IDEA 自带 Maven(无需额外安装)

3. 微服务架构设计

表格

模块名称 模块类型 核心作用
cloud-demo 父工程 统一管理所有依赖版本,解决依赖冲突
common 公共子模块 存放工具类、实体类、通用依赖
gateway 网关微服务 统一入口、路由转发、服务治理
user-service 业务微服务 业务功能实现(模板服务)

4. 分步搭建教程(核心)

4.1 第一步:创建 Maven 父工程

  1. 打开 IDEA → 左上角 文件新建项目
  2. 配置:
    • 左侧选择:Maven
    • 取消勾选:创建自 archetype
    • JDK:选择 21
    • 点击 下一步
  3. 项目信息:
    • 名称:cloud-demo
    • 组 ID:com.example
    • 工件 ID:cloud-demo
    • 点击 创建
  4. 清理工程:删除父工程下的 src 文件夹
  5. 替换父工程 pom.xml(全量复制):

xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>cloud-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>cloud-demo</name>
    <description>Spring Cloud 微服务脚手架</description>

    <!-- 统一版本配置 -->
    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.boot.version>3.2.5</spring.boot.version>
        <spring.cloud.version>2023.0.1</spring.cloud.version>
        <spring.cloud.alibaba.version>2023.0.1.2</spring.cloud.alibaba.version>
    </properties>

    <!-- 依赖版本锁定 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <modules>
    </modules>
</project>

4.2 第二步:创建公共模块(common)

  1. 右键父工程 cloud-demo新建模块
  2. 配置:Maven + JDK21 + 取消模板 → 名称:common → 创建
  3. 替换 common/pom.xml

xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.example</groupId>
        <artifactId>cloud-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>common</artifactId>
    <name>common</name>
    <description>公共模块</description>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
</project>

4.3 第三步:创建网关模块(gateway)

  1. 右键父工程 → 新建模块 → 名称:gateway → 创建
  2. 替换 gateway/pom.xml

xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.example</groupId>
        <artifactId>cloud-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>gateway</artifactId>
    <name>gateway</name>
    <description>微服务网关</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
  1. 创建配置文件:gateway/src/main/resources/application.yml

yaml

server:
  port: 8888
spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    gateway:
      routes:
        - id: user-service
          uri: lb://user-service
          predicates:
            - Path=/user/**
  1. 创建启动类:com.example.gateway.GatewayApplication

java

运行

package com.example.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

4.4 第四步:创建业务微服务(user-service)

  1. 右键父工程 → 新建模块 → 名称:user-service → 创建
  2. 替换 user-service/pom.xml

xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.example</groupId>
        <artifactId>cloud-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>user-service</artifactId>
    <name>user-service</name>
    <description>用户微服务</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
  1. 创建配置文件:user-service/src/main/resources/application.yml

yaml

server:
  port: 8081
spring:
  application:
    name: user-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  1. 创建启动类:com.example.user.UserServiceApplication

java

运行

package com.example.user;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class UserServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
    }
}
  1. 创建测试接口:com.example.user.controller.UserController

java

运行

package com.example.user.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {
    @GetMapping("/info")
    public String getUserInfo() {
        return "用户服务:JDK21 + Spring Cloud 微服务脚手架搭建成功!";
    }
}

5. Nacos 多项目共用说明

5.1 核心结论

无任何影响,Nacos 支持多项目同时使用,服务自动隔离

5.2 隔离规则

  • 依靠 服务名(spring.application.name) 区分不同项目服务
  • 无需修改现有项目配置,直接启动新脚手架即可

5.3 进阶隔离(可选)

如需物理隔离,在 Nacos 新建命名空间,在微服务 yml 中添加:

yaml

spring:
  cloud:
    nacos:
      discovery:
        namespace: 你的命名空间ID

6. 服务启动与功能验证

6.1 启动顺序

  1. 启动已运行的 Nacos 服务
  2. 启动 user-service
  3. 启动 gateway

6.2 验证步骤

  1. 打开 Nacos 控制台:http://localhost:8848/nacos账号密码:nacos/nacos
  2. 查看服务列表:gatewayuser-service 已注册
  3. 浏览器访问网关测试地址:http://localhost:8888/user/info
  4. 预期返回结果:用户服务:JDK21 + Spring Cloud 微服务脚手架搭建成功!

7. 标准项目结构

plaintext

cloud-demo(父工程)
├── common(公共模块)
├── gateway(网关服务)
├── user-service(业务服务)
└── pom.xml(父工程配置)

8. 常见注意事项

  1. 依赖版本:所有子模块继承父工程,禁止手动写版本号
  2. 服务名:新项目服务名不要与旧项目重复
  3. JDK 版本:全程使用 JDK21,避免版本不兼容
  4. 启动顺序:必须先启动 Nacos,再启动微服务
  5. 端口占用:8848 (Nacos)、8888 (网关)、8081 (用户服务) 无冲突即可

9. 总结

本脚手架基于 IDEA 2025.3.3 中文版 + JDK21 构建,是标准的 Spring Cloud 微服务基础架构:

  1. 父工程统一管理依赖,无冲突
  2. 支持 Nacos 多项目共用,零侵入
  3. 包含网关、公共模块、业务服务,可直接扩展业务
  4. 代码简洁、配置清晰,适合作为企业级微服务基础模板
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐