当前位置: 首页 > news >正文

Java零基础必看,1小时搞定微服务,从0到1搭建springcloud+nacos实战项目,搞定企业刚需技术!

Java零基础必看,1小时搞定微服务,从0到1搭建springcloud+nacos实战项目,搞定企业刚需技术!

一、前置准备(5 分钟)

确保你的电脑已安装以下环境,这是运行项目的基础:

  1. JDK 8+:微服务主流版本适配,配置好JAVA_HOME环境变量
  2. Maven 3.6+:用于项目依赖管理,配置好MAVEN_HOME
  3. Nacos Server:下载地址:https://github.com/alibaba/nacos/releases
    • 启动命令(Windows):bin/startup.cmd -m standalone(单机模式)
    • 启动后访问:http://localhost:8848/nacos,默认账号 / 密码:nacos/nacos

二、核心思路

  1. 先搭建父工程统一管理依赖版本,避免版本冲突
  2. 搭建服务提供者(provider):提供接口供其他服务调用
  3. 搭建服务消费者(consumer):通过 Nacos 调用提供者接口
  4. 基于 Nacos 实现服务注册 / 发现配置管理

三、实战编码(50 分钟)

步骤 1:创建父工程(Maven)

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>springcloud-nacos-demo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <!-- 子模块声明 --> <modules> <module>nacos-provider</module> <module>nacos-consumer</module> </modules> <!-- 依赖版本管理 --> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <spring-cloud-alibaba.version>2.2.9.RELEASE</spring-cloud-alibaba.version> <spring-cloud.version>Hoxton.SR12</spring-cloud.version> <spring-boot.version>2.3.12.RELEASE</spring-boot.version> </properties> <!-- 依赖版本锁定 --> <dependencyManagement> <dependencies> <!-- Spring Boot 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Spring Cloud 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Spring Cloud Alibaba 依赖 --> <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> </project>
步骤 2:创建服务提供者(nacos-provider)
1. 子工程 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>springcloud-nacos-demo</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>nacos-provider</artifactId> <dependencies> <!-- Spring Boot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Nacos 服务注册发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies> </project>
2. 配置文件(application.yml)

yaml

server: port: 8081 # 提供者端口 spring: application: name: nacos-provider # 服务名称(核心,Nacos通过这个名称识别服务) cloud: nacos: discovery: server-addr: localhost:8848 # Nacos服务地址
3. 启动类 + 业务接口

java

运行

package com.example.provider; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; // 开启服务注册发现(Nacos) @EnableDiscoveryClient @SpringBootApplication public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); } // 业务接口:模拟提供数据服务 @RestController class ProviderController { // 接口路径:/hello/{name} @GetMapping("/hello/{name}") public String hello(@PathVariable String name) { return "Hello " + name + "! 我是Nacos服务提供者"; } } }
步骤 3:创建服务消费者(nacos-consumer)
1. 子工程 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>springcloud-nacos-demo</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>nacos-consumer</artifactId> <dependencies> <!-- Spring Boot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Nacos 服务注册发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- RestTemplate:用于远程调用 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> </dependencies> </project>
2. 配置文件(application.yml)

yaml

server: port: 8082 # 消费者端口 spring: application: name: nacos-consumer # 消费者服务名称 cloud: nacos: discovery: server-addr: localhost:8848 # Nacos服务地址
3. 启动类 + 调用逻辑
package com.example.consumer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; // 开启服务注册发现 @EnableDiscoveryClient @SpringBootApplication public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } // 配置RestTemplate,开启负载均衡(@LoadBalanced) @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } // 消费者接口:调用提供者服务 @RestController class ConsumerController { // 注入RestTemplate private final RestTemplate restTemplate; // 构造器注入 public ConsumerController(RestTemplate restTemplate) { this.restTemplate = restTemplate; } // 接口路径:/consumer/hello/{name} @GetMapping("/consumer/hello/{name}") public String hello(@PathVariable String name) { // 调用提供者服务:使用服务名称(nacos-provider)代替IP+端口,实现服务发现 String url = "http://nacos-provider/hello/" + name; return restTemplate.getForObject(url, String.class); } } }

四、测试验证(5 分钟)

  1. 启动 Nacos Server(确保 8848 端口正常)
  2. 启动nacos-provider(8081 端口)
  3. 启动nacos-consumer(8082 端口)
  4. 访问 Nacos 控制台:http://localhost:8848/nacos,在「服务管理」→「服务列表」中能看到nacos-providernacos-consumer两个服务
  5. 测试接口:访问http://localhost:8082/consumer/hello/Java微服务,返回结果:Hello Java微服务! 我是Nacos服务提供者,说明调用成功。

总结

  1. 核心依赖:Spring Cloud Alibaba Nacos Discovery 实现服务注册与发现,RestTemplate 实现服务间远程调用。
  2. 关键配置:每个微服务需配置spring.application.name(服务名)和spring.cloud.nacos.discovery.server-addr(Nacos 地址),且启动类需加@EnableDiscoveryClient
  3. 核心逻辑:消费者通过服务名(而非硬编码 IP)调用提供者接口,由 Nacos 自动发现服务地址,实现微服务解耦。

这个实战项目覆盖了企业微服务开发的核心刚需:服务注册发现、跨服务调用,是 Spring Cloud + Nacos 的最小可用模型,后续可扩展配置中心、熔断降级、网关等企业级特性。

http://www.jsqmd.com/news/318726/

相关文章:

  • 第6章:字符设备驱动的高级操作1:ioctl 系统调用
  • SQL 注入攻防进阶
  • 让 Q 值估计更准确:从 DQN 到 Double DQN 的改进方案
  • 《贾子智慧理论体系:从认知到文明的统一框架》| Kucius Wisdom Framework: A Unified Framework from Cognition to Civilization
  • 使用Dockerfile构建Flask应用镜像
  • vulnstack红队实战一
  • 全球首次突破异形框定位难题,百度开源全新OCR模型 PaddleOCR-VL-1.5
  • 智能指针详解
  • PVE 9.0 定制 Debian 13 镜像 支持 Cloud-Init 敏捷部署虚拟机【模板篇】
  • Java面试中的异常继承难题:自定义Exception避坑指南
  • Spring Boot的项目创建
  • 小程序毕设项目推荐-基于SpringBoot的医院设备管理及报修系统微信小程序基于springboot的医院设备管理及报修小程序的设计与实现【附源码+文档,调试定制服务】
  • 小程序毕设选题推荐:基于springboot的医院设备管理及报修小程序的设计与实现基于微信小程序的医院设备管理及报修系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 基于SpringBoot的房屋租售系统毕业论文+PPT(附源代码+演示视频)
  • 销售实战资源合集
  • 使用 NanUI 快速创建具有现代用户界面的 WinForm 应用程序
  • AI运维专家圆桌:新兴技术类别的诞生
  • ServiceNow与Anthropic达成多年合作协议
  • 一款基于 .NET Avalonia 开源免费、快速、跨平台的图片查看器
  • 【课程设计/毕业设计】基于微信小程序的医院设备管理及报修系统基于springboot的医院设备管理及报修小程序的设计与实现【附源码、数据库、万字文档】
  • AI工具存在严重安全脆弱性,治理刻不容缓
  • 小程序计算机毕设之基于SpringBoot+微信小程序的微信医院医疗设备管理系统管理系统基于springboot的医院设备管理及报修小程序的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • SolarWinds修复Web Help Desk四个关键漏洞
  • 小程序毕设项目:基于springboot的医院设备管理及报修小程序的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 为啥大厂 FPS 进对局不立刻清空局外缓存,而是打完再清?(大白话超长版)
  • 【毕业设计】基于springboot的医院设备管理及报修小程序的设计与实现(源码+文档+远程调试,全bao定制等)
  • 大数据架构设计:非结构化数据处理系统搭建
  • 《明日方舟:终末地》:披着二游皮的基建模拟器
  • Redis 与大数据 NoSQL 数据库的融合应用
  • “抖音崩了”冲上热搜,无法正常搜索,刷视频功能未受影响