springcloud教程 — 1.快速搭建入门级demo,看这一篇就够了

springcloud教程 — 1.快速搭建入门级demo,看这一篇就够了废话不多讲 跟紧我 开启你的 SpringCloud 初体验首先回顾微服务的基本组成 图片 here 生产者 提供服务消费者 消费服务服务注册 发现中心 服务注册 发现 监控所以 首先明白 springcloud 微服务的架构基础 生产者 client 消费者 client 服务注册 发现中心 server

废话不多讲,跟紧我,开启你的SpringCloud初体验

首先回顾微服务的基本组成:

[图片 here]

生产者:提供服务

消费者:消费服务

服务注册/发现中心:服务注册,发现,监控

所以,首先明白springcloud微服务的架构基础 :生产者(client),消费者(client),服务注册/发现中心(server)

*

预先说明!!springboot与SpringCloud及SpringCloud的相关组件有版本兼容问题,以下代码中选择的版本都是经过实际测试,请勿随意修改版本,否则会出现未知问题!

先看demo结构:基础组件学习共需要创建7个小spring-boot项目,本章节先创建其中4个基础项目,其余组件的学习后续加入进来即可, JDK统一选择1.8

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

首先创建父工程 j-cloud

创建简单的名为j-cloud的springboot工程,打包方式为pom,pom.xml如下:

 
   
   
   
     4.0.0 
    
   
     cn.jorian.framework 
    
   
     j-cloud 
    
   
     1.0.0 
    
   
     pom 
    
   
     j-cloud 
    
    
   
     http://www.example.com 
    
    
    
      UTF-8 
     
    
      UTF-8 
     
    
      1.8 
     
    
    
     
     
       junit 
      
     
       junit 
      
     
       4.11 
      
     
       test 
      
     
     
     
     
       io.springfox 
      
     
       springfox-swagger2 
      
     
       2.9.2 
      
     
     
     
       io.springfox 
      
     
       springfox-swagger-ui 
      
     
       2.9.2 
      
     
     
     
       com.github.xiaoymin 
      
     
       swagger-bootstrap-ui 
      
     
       1.9.3 
      
     
     
     
       io.springfox 
      
     
       springfox-bean-validators 
      
     
       2.9.2 
      
     
    
    
    
   

一,创建服务注册发现中心工程:j-cloud-server-eureka

1.在父工程j-cloud右击创建一个module: j-cloud-server-eureka

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

2.填写相关信息

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

3.新创建的模块结构如下:

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

4.模块j-cloud-server-eureka的pom.xml如下:

 
   
   
   
     4.0.0 
    
    
    
      org.springframework.boot 
     
    
      spring-boot-starter-parent 
     
    
      2.2.4.RELEASE 
     
     
     
    
   
     cn.jorian.framework 
    
   
     j-cloud-server-eureka 
    
   
     1.0.0 
    
   
     j-cloud-server-eureka 
    
   
     Demo project for Spring Boot 
    
    
    
      1.8 
     
    
      Hoxton.SR1 
     
    
    
     
     
     
       org.springframework.cloud 
      
     
       spring-cloud-starter-netflix-eureka-server 
      
     
     
     
     
       org.projectlombok 
      
     
       lombok 
      
     
       1.16.20 
      
     
       provided 
      
     
     
     
       org.springframework.boot 
      
     
       spring-boot-starter-test 
      
     
       test 
      
      
       
       
         org.junit.vintage 
        
       
         junit-vintage-engine 
        
       
      
     
    
    
     
      
      
        org.springframework.cloud 
       
      
        spring-cloud-dependencies 
       
      
        ${spring-cloud.version} 
       
      
        pom 
       
      
        import 
       
      
     
    
    
     
      
      
        org.springframework.boot 
       
      
        spring-boot-maven-plugin 
       
      
     
    
   

5.模块j-cloud-server-eureka的application.yml如下

spring: security: basic: enabled: true user: name: jorian password:  server: port: 8761 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://jorian:@localhost:8761/eureka 

注意 :yml格式的文件有特殊要求,必须树形结构,不能有tab,具体请百度 

6.模块j-cloud-server-eureka的启动类需加上注解@EnableEurekaServer, 来声明其是一个基于Eureka的服务注册发现中心

package cn.jorian.framework.jcloudservereureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer //标明是一个server public class JCloudServerEurekaApplication { public static void main(String[] args) { SpringApplication.run(JCloudServerEurekaApplication.class, args); System.out.println("---服务监控访问地址"+"http://localhost:8761"); } } 

7.启动j-cloud-server-eureka服务:

执行main方法启动springboot工程

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

8.在浏览器访问:http://localhost:8761,查看eureka服务注册发现中心是否启动

启动成功界面如下:

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

二,创建生产者模块:j-cloud-provider1

1.同上,在父工程j-cloud右击创建一个module: j-cloud-provider1

2.填写相关信息,打包方式为jar

3.整个工程结构如下:

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

4.生产者模块j-cloud-provider1的pom.xml如下

 
   
   
   
     4.0.0 
    
    
    
      org.springframework.boot 
     
    
      spring-boot-starter-parent 
     
    
      2.2.4.RELEASE 
     
     
     
    
   
     cn.jorian.framework 
    
   
     j-cloud-provider1 
    
   
     1.0.0 
    
   
     j-cloud-provider1 
    
   
     Demo project for Spring Boot 
    
    
    
      1.8 
     
    
      Hoxton.SR1 
     
    
    
     
     
     
       org.springframework.cloud 
      
     
       spring-cloud-starter-netflix-eureka-client 
      
     
     
     
     
       org.projectlombok 
      
     
       lombok 
      
     
       1.16.20 
      
     
       provided 
      
     
     
     
     
       org.springframework.boot 
      
     
       spring-boot-starter-test 
      
     
       test 
      
      
       
       
         org.junit.vintage 
        
       
         junit-vintage-engine 
        
       
      
     
     
     
       org.springframework.boot 
      
     
       spring-boot-starter-web 
      
     
       2.2.4.RELEASE 
      
     
       compile 
      
     
    
    
     
      
      
        org.springframework.cloud 
       
      
        spring-cloud-dependencies 
       
      
        ${spring-cloud.version} 
       
      
        pom 
       
      
        import 
       
      
     
    
    
     
      
      
        org.springframework.boot 
       
      
        spring-boot-maven-plugin 
       
      
     
    
   

5.生产者模块j-cloud-provider1的application.yml如下, 此处注意配置文件中声明了服务注册中心的地址

# 应用端口 server: port: 7901 spring: application: # 应用名称 name: provider-user # eureka 配置 eureka: client: serviceUrl: defaultZone: http://jorian:@localhost:8761/eureka logging: level: root: INFO 

6.生产者模块j-cloud-provider1的启动类如下,添加注解:@EnableEurekaClient来声明其是一个client(生产者或者消费者,在这里他是生产者)

package cn.jorian.framework; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; / * @author jorian */ @SpringBootApplication @EnableEurekaClient //表明这是一个eureka客户端 public class JCloudProvider1Application { public static void main(String[] args) { SpringApplication.run(JCloudProvider1Application.class, args); } } 

7.创建UserController.java,用来提供测试用的API

UserController.java代码

package cn.jorian.framework.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/user") public class UserController { @RequestMapping("/sayHello") public String sayhello(){ return "I`m provider 1 ,Hello consumer!"; } @RequestMapping("/sayHi") public String sayHi(){ return "I`m provider 1 ,Hello consumer!"; } @RequestMapping("/sayHaha") public String sayHaha(){ return "I`m provider 1 ,Hello consumer!"; } } 

8.执行main方法,启动生产者模块: j-cloud-provider1

9.在浏览器访问或者刷新:http://localhost:8761,在eureka服务注册发现中心查看生产者服务是否已被发现注册

注册成功如下:可以看到应用名称,访问地址,也可以自行测试接口的返回结果

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

三,创建消费者:j-cloud-sonsumer

1.同上,在父工程j-cloud右击创建一个module:j-cloud-sonsumer

2.填写相关信息,打包方式为jar

3.整个消费者模块:j-cloud-sonsumer工程结构如下:

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

4.消费者模块:j-cloud-sonsumer的pom.xml如下

 
   
   
   
     4.0.0 
    
    
    
      org.springframework.boot 
     
    
      spring-boot-starter-parent 
     
    
      2.2.4.RELEASE 
     
     
     
    
   
     cn.jorian.framework 
    
   
     j-cloud-consumer 
    
   
     1.0.0 
    
   
     j-cloud-consumer 
    
   
     Demo project for Spring Boot 
    
    
    
      1.8 
     
    
      Hoxton.SR1 
     
    
    
     
     
       org.springframework.cloud 
      
     
       spring-cloud-starter-netflix-eureka-client 
      
     
     
     
     
       org.projectlombok 
      
     
       lombok 
      
     
       1.16.20 
      
     
       provided 
      
     
     
     
       org.springframework.boot 
      
     
       spring-boot-starter-test 
      
     
       test 
      
      
       
       
         org.junit.vintage 
        
       
         junit-vintage-engine 
        
       
      
     
     
     
       org.springframework.boot 
      
     
       spring-boot-starter-web 
      
     
       2.2.4.RELEASE 
      
     
       compile 
      
     
    
    
     
      
      
        org.springframework.cloud 
       
      
        spring-cloud-dependencies 
       
      
        ${spring-cloud.version} 
       
      
        pom 
       
      
        import 
       
      
     
    
    
     
      
      
        org.springframework.boot 
       
      
        spring-boot-maven-plugin 
       
      
     
    
   

5. 消费者模块:j-cloud-sonsumer的application.yml如下

server: port: 8001 spring: application: name: j-cloud-consumer # eureka 配置 eureka: client: serviceUrl: defaultZone: http://jorian:@localhost:8761/eureka logging: level: root: INFO 

6.消费者模块:j-cloud-sonsumer的启动类如下,添加注解:@EnableEurekaClient来声明其是一个client(生产者或者消费者,在这里他是消费者)

package cn.jorian.framework; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient public class JCloudConsumerApplication { public static void main(String[] args) { SpringApplication.run(JCloudConsumerApplication.class, args); } } 

7.创建HelloController对外提供访问API

HelloController代码如下:

package cn.jorian.framework.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; / * * @author jorian * */ @RestController public class HelloController { @Bean @LoadBalanced public RestTemplate getResttemplate(){ return new RestTemplate(); } @Autowired private RestTemplate resttemplate; @RequestMapping("/hello") public String hello(){ //指出服务地址 http://{服务提供者应用名名称}/{具体的controller} String url="http://provider-user/user/sayHello"; //返回值类型和我们的业务返回值一致 return resttemplate.getForObject(url, String.class); } @RequestMapping("/hi") public String hi(){ //指出服务地址 http://{服务提供者应用名名称}/{具体的controller} String url="http://provider-user/user/sayHi"; //返回值类型和我们的业务返回值一致 return resttemplate.getForObject(url, String.class); } @RequestMapping("/haha") public String haha(){ //指出服务地址 http://{服务提供者应用名名称}/{具体的controller} String url="http://provider-user/user/sayHaha"; //返回值类型和我们的业务返回值一致 return resttemplate.getForObject(url, String.class); } } 

7.执行j-cloud-sonsumer的main方法,启动消费者工程

8.在浏览器访问或者刷新:http://localhost:8761,在eureka服务注册发现中心查看消费者服务是否已被发现注册

注册成功如下,可以看到应用名称,访问地址

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

四,测试

1.在地址栏直接访问消费者地址,http://localhost:8001/hello,成功调用到 j-cloud-provider1提供的接口并返回结果!

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

2.升级难度尝试开启多个provider实例,用来测试负载均衡

可以采用修改yml文件 中的端口号重复启动实例也可以另外新建多个provider(我们采用这种方式),修改其中的yml文件中的端口号,然后启动。

由于eureka配置了ribbon负载均衡策略,消费者的请求会在客户端被决定好发送到哪台服务提供者进行处理。

创建与启动过程不再赘述,参考j-cloud-provider1创建启动过程

注意:

  1. 创建与j-cloud-provider1所有内容一致的j-cloud-provider2
  2. 只修改第二个生产者j-cloud-provider2 的 application.yml 中的端口号为7902即可
  3. 注意不要修改application.yml 中的应用名称, 两个生产者要用同样的名称,代表同一个应用的两个实列
  4.  然后启动工程

第二个生产者模块: j-cloud-provider2项目结构如下:

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

3.启动成功后在注册中心查看服务注册情况,2个provider都已经上线

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

4.地址栏重复访问消费者地址N次,http://localhost:8001/hello,会发现返回结果在两个provider切换,实现了负载均衡

第n次:

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

第n+1次:

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

至此,基础demo搭建完成

您可以继续查看下一章:springcloud教程 — 2.feign的使用实践,优雅的发送请求

下载完整工程在这里:若对您有用,帮忙点个赞,谢谢icon-default.png?t=M3C8https://github.com/Jorian93/j-cloud.git

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228206.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午7:34
下一篇 2026年3月16日 下午7:34


相关推荐

  • OSPF协议介绍

    OSPF协议介绍概述路由协议 OSPF 全称为 OpenShortest 也就开放的最短路径优先协议 因为 OSPF 是由 IETF 开发的 它的使用不受任何厂商限制 所有人都可以使用 所以称为开放的 而最短路径优先 SPF 只是 OSPF 的核心思想 其使用的算法是 Dijkstra 算法 最短路径优先并没有太多特殊的含义 并没有任何一个路由协议是最长路径优先的 所有协议 都会选最短的 OSPF 的流量使

    2026年3月26日
    2
  • 深度学习超参数介绍及调参

    深度学习超参数介绍及调参文章目录超参数概念什么是超参数 参数和超参数的区别 神经网络中包含哪些超参数 为什么要进行超参数调优 超参数的重要性顺序部分超参数如何影响模型性能 部分超参数合适的范围网络训练中的超参调整策略如何调试模型 为什么要做学习率调整 超参数概念什么是超参数 参数和超参数的区别 区分两者最大的一点就是是否通过数据来进行调整 模型参数通常是有数据来驱动调整 超参数则不需要数据来驱动 而是在训练前或

    2026年3月20日
    2
  • 数据库设计概念结构设计_数据库设计典型实例

    数据库设计概念结构设计_数据库设计典型实例文章目录数据库设计概念设计结构概念结构设计ER模型的基本元素实体/实体集属性区别实体和属性联系二元联系的关系1:11:nm:n一元联系1:11:nm:n三元联系采用ER模型的概念设计设计局部ER模型例题设计全局ER模型全局ER模型的优化数据库设计数据库设计:构造最优的数据模型,建立数据库及其应用系统的过程数据库设计的好坏非常重要概念设计结构概念设计的目标是产生反映用户需求的数据库概念结构,即概念模型概念模型具有硬件独立、软件独立的特点处于一个桥梁作用概念设计的主要步骤

    2022年10月12日
    6
  • HDU 4814 Golden Radio Base 小模拟

    HDU 4814 Golden Radio Base 小模拟

    2021年12月6日
    44
  • 像Excel一样使用python进行数据分析

    像Excel一样使用python进行数据分析Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作。在Python中pandas库用于数据处理

    2022年7月6日
    19
  • 计算机二进制电路原理,二进制与计算机

    计算机二进制电路原理,二进制与计算机二进制二进制是计算技术中广泛采用的一种数制 二进制数据是用 0 和 1 两个数码来表示的数 它的基数为 2 进位规则是 逢二进一 借位规则是 借一当二 数字电子电路中 逻辑门的实现直接应用了二进制 因此现代的计算机和依赖计算机的设备里都用到二进制 晶体管晶体管 transistor 是一种固体半导体器件 晶体管是门电路的主要组成 晶体管电路有导通和截止两种状态 这两种状态就可以作为 二进制 的基础 im

    2025年10月17日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号