登录
首页 >  文章 >  java教程

Java微服务搭建教程与实战指南

时间:2026-02-06 20:03:37 388浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《Java微服务环境搭建指南》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

Spring Boot微服务应基于spring-boot-starter-parent快速初始化,选用LTS版本(如3.3.5),引入web和actuator起步依赖,禁用banner;注册中心优先选Nacos或Consul,避免Eureka和ZooKeeper;本地联调推荐Docker Compose编排Nacos、MySQL等组件;配置须严格区分bootstrap.yml(仅放引导级配置)与application.yml,通过spring.profiles.active指定环境。

在Java中如何搭建微服务开发环境_Java微服务环境准备说明

用 Spring Boot + Maven 快速初始化微服务模块

微服务不是从零写框架,而是基于约定优先的脚手架快速启动。Spring Boot 官方推荐用 spring-boot-starter-parent 作为父 POM,它统一管理依赖版本、插件配置和默认属性。不手动指定 spring-boot-dependencies 版本,否则容易触发 ClassNotFoundException 或自动配置失效。

关键操作点:

  • pom.xml 中声明 ,版本建议选 LTS(如 3.2.123.3.5),避免用 3.4.0-Mx 等里程碑版
  • 必须引入 spring-boot-starter-web(提供内嵌 Tomcat 和 REST 支持)和 spring-boot-starter-actuator(健康检查、指标暴露)
  • 禁用默认 banner:在 application.propertiesspring.main.banner-mode=off,减少日志干扰
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>3.3.5</version>
  <relativePath/>
</parent>

注册中心选型:Eureka 已停更,优先用 Nacos 或 Consul

Eureka 2.x 自 2018 年起已停止维护,Netflix 官方明确标记为 deprecated。Spring Cloud 2022+ 版本默认移除对 Eureka 的原生支持,强行使用会导致 NoUniqueBeanDefinitionException 或服务无法注册。

替代方案对比:

  • Nacos:国产,同时支持服务发现 + 配置中心,控制台友好,spring-cloud-starter-alibaba-nacos-discovery 适配 Spring Boot 3 需搭配 spring-cloud-starter-loadbalancer
  • Consul:HashiCorp 出品,强一致性,但需额外部署 Agent,spring-cloud-starter-consul-discovery 默认启用 ACL,本地开发建议关掉 spring.cloud.consul.config.enabled=false
  • 别碰 ZooKeeper:CP 模型导致脑裂风险高,Spring Cloud ZooKeeper 3.x 对 Java 17+ 兼容性差

本地多服务联调:用 Docker Compose 启动依赖组件

微服务不是单体打包就能跑通。常见失败场景是服务 A 调用服务 B 时抛 Connection refused,本质是没启动注册中心或 MySQL/Redis 连不上。

推荐用 docker-compose.yml 统一编排基础组件,而不是靠 IDE 手动启多个 Spring Boot 实例:

  • 注册中心(Nacos)端口映射到 8848,并挂载自定义 cluster.conf 避免集群模式误启
  • MySQL 用 mysql:8.0 镜像,显式设置 MYSQL_ROOT_PASSWORD,Spring Boot 配置里用 jdbc:mysql://mysql:3306/demo?serverTimezone=UTC(注意 host 是 mysql,不是 localhost
  • depends_on 保证启动顺序,但要配合 Spring Boot 的 spring.sql.init.mode=always 做初始化重试
services:
  nacos:
    image: nacos/nacos-server:v2.3.2
    ports: ["8848:8848"]
    environment:
      - MODE=standalone
  mysql:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=123456

调试时别忽略 spring.profiles.active 和 bootstrap.yml

微服务配置加载顺序很关键:bootstrap.yml 优先于 application.yml 加载,且只被 Spring Cloud Config/Nacos 等外部配置中心读取。如果把 spring.cloud.nacos.server-addr 写在 application.yml 里,服务根本注册不上去。

另一个高频问题:本地开发切 dev 环境,但启动类没传参,spring.profiles.active 默认是 default,导致读不到 application-dev.yml

  • IDEA 启动配置里加 VM options:-Dspring.profiles.active=dev
  • bootstrap.yml 只放注册中心地址、配置中心地址、加密密钥等“引导级”配置
  • 禁止在 bootstrap.yml 里写业务属性(如 user.timeout=3000),会引发 IllegalStateException: Unable to load config data

配置加载链实际是:bootstrap.yml → 连接 Nacos → 拉取远程 application-dev.yml → 合并本地 application-dev.yml → 覆盖 application.yml

以上就是《Java微服务搭建教程与实战指南》的详细内容,更多关于的资料请关注golang学习网公众号!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>