使用Spring Initializr生成含Web、LoadBalancer、Config Client等依赖的项目骨架,按api/common/service-xxx/deploy分层组织模块,集成Actuator、服务发现、配置中心与链路追踪,并通过Dockerfile和K8s YAML实现容器化部署。
打开 https://start.spring.io,选择 Spring Boot 最新稳定版(如 3.2.x),语言选 Java,构建工具推荐 Maven。在 Dependencies 中勾选核心依赖:Spring Web(提供 REST 支持)、Spring Cloud Starter LoadBalancer(服务间调用负载均衡)、Spring Config Client(配置中心支持)、Actuator(健康检查与监控端点)。若需注册中心,可加 Spring Cloud Starter Netflix Eureka Client 或 Spring Cloud Alibaba Nacos Disco
very。点击 Generate 下载 ZIP,解压后导入 IDE 即可运行。
单体式包结构不适用于微服务。建议根目录下分层管理:
openapi.yaml)和生成的 DTO/Client 接口(可用 openapi-generator-maven-plugin 自动生成)service-user、service-order),各自含完整启动类、Controller、Service、Repository开箱即用的云原生支持需主动启用:
application.yml 中开启 Actuator 端点:management.endpoints.web.exposure.include: "*" ,并配置 health.show-details: always
@EnableDiscoveryClient 注解启用服务注册发现;配合 @LoadBalanced 的 RestTemplate 或 WebClient.Builder 实现服务间调用spring-cloud-starter-bootstrap(Spring Boot 3.2+ 推荐)加载 bootstrap.yml,连接 Nacos / Apollo 等配置中心micrometer-tracing-bridge-brave + spring-cloud-starter-sleuth(或升级到 Micrometer Tracing)接入链路追踪新建 Dockerfile 放入各 service 模块根目录:
FROM eclipse/temurin:17-jre-jammy
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]再配一个 .dockerignore 过滤 target、.git、IDEA 文件。同时在 deploy/k8s 下为每个服务准备最小可用 YAML:
configmap.yaml:外部化配置项deployment.yaml:含 readiness/liveness 探针、资源限制(requests/limits)service.yaml:ClusterIP 类型,暴露内部端口
这样 CI 流水线拉取代码后,直接 build image → push registry → apply k8s manifest 即可上线。