SpringCloud 2023.0.1

本文介绍如何使用 springboot3及cloud2023 进行微服务模块化开发

采用父-module 模块开发

父工程 demo-java

pom.xml

 <!--配置 springboot的依赖的版本号, 方便 module 进行继承--><dependencyManagement><dependencies><!--增加 springboot的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>3.2.5</version><type>pom</type><scope>import</scope></dependency>​<!--增加 springcloud的依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2023.0.1</version><type>pom</type><scope>import</scope></dependency>​​</dependencies></dependencyManagement>​​

子模块 cloud-eureka-server-7001

pom.xml

 ​<dependencies><!--增加 boot web的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>​<!--增加  eureka-server 的依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies>​

启动类:

 package com.ly;​import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;​@SpringBootApplication@EnableEurekaServerpublic class CloudEurekaServer7001 {public static void main(String[] args) {SpringApplication.run(CloudEurekaServer7001.class,args);}}​

配置文件 application.yml

 # 设置端口号为 7001server:port: 7001​​eureka:instance:hostname: localhostclient:fetch-registry: false    #如果fetch-registry为false, 则表示自己为注册中心register-with-eureka: false  #表示是否向eureka注册中心注册自己service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka   # 服务地址​​​​

启动测试:

子模块 cloud-eureka-provider-8001

pom.xml

 <dependencies><!--增加 boot web的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--增加 eureka client 依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--增加 监控 boot 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies>

启动类

 package com.ly;​import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;​​@SpringBootApplication@EnableDiscoveryClientpublic class EurekaProvider8001 {public static void main(String[] args) {SpringApplication.run(EurekaProvider8001.class,args);}}​

application.yaml

 ​#设置端口号server:port: 8001​​​eureka:client:fetch-registry: true #是提供者,不是注册中心 ,可省略register-with-eureka: true #向注册中心 注册服务,可省略service-url: #服务地址defaultZone: http://localhost:7001/eureka​​

刷新 之前的 server

如何 解决 unknow ?修改 provider-8001 的 yaml文件,增加 spring.application.name

为了 模拟 用户管理 ---provider8001 , 订单管理--provider8002, 消费者来 消费服务

子模块 cloud-eureka-common-api

pom.xml

  <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>

创建 实体层 User.java 与 OrderInfo.java

 package com.ly.entity;​​import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.ToString;​/*** 用户 实体*/@Data@AllArgsConstructor@NoArgsConstructor@ToStringpublic class User {private int userId; //用户编号private String username;//用户名private String phone;//电话}​
 package com.ly.entity;​import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.ToString;​import java.time.LocalDateTime;​/*** 订单 实体*/@Data@AllArgsConstructor@NoArgsConstructor@ToStringpublic class OrderInfo {private int orderNo;//订单编号private String title;// 标题private double price;//单价private double count;//个数private LocalDateTime time;//购买时间private int userId;// 用户编号}​

修改 provider8001 的 pom.xml

增加

 <!--引入  common-api module--><dependency><groupId>com.ly</groupId><artifactId>cloud-eureka-common-api</artifactId><version>1.0-SNAPSHOT</version></dependency>

为 provider8001 增加 controller

 package com.ly.controller;​import com.ly.entity.User;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;​/*** provider8001 --模拟的就是用户管理 模块*/@RestControllerpublic class UserController {​@GetMapping("/user/{id}")public User find(@PathVariable("id")int id){​// 模拟数据返回return  new User(1001,"李四","137526154875");}​​​​}​

启动 provider8001 进行测试

看到以上 截图表示 成功

子模块 eureka-provider-8002

pom.xml

  <dependencies><!--增加 boot web的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--增加 eureka client 依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--增加 监控 boot 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>​<!--引入  common-api module--><dependency><groupId>com.ly</groupId><artifactId>cloud-eureka-common-api</artifactId><version>1.0-SNAPSHOT</version></dependency>​</dependencies>

application.yaml

 ​#设置端口号server:port: 8002​​​eureka:client:fetch-registry: true #是提供者,不是注册中心 ,可省略register-with-eureka: true #向注册中心 注册服务,可省略service-url: #服务地址defaultZone: http://localhost:7001/eurekaspring:application:name: provider-8002        # 设置应用名, 注意, 值 不允许使用 下划线​

启动类

 package com.ly;​import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;​@SpringBootApplication@EnableDiscoveryClientpublic class EurekaProvider8002 {public static void main(String[] args) {SpringApplication.run(EurekaProvider8002.class,args);}}​

controller

 package com.ly.controller;​import com.ly.entity.OrderInfo;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;​import java.time.LocalDateTime;​/*** provider8002 模拟就是 订单管理 模块*/@RestControllerpublic class OrderInfoController {@GetMapping("/order/{userId}")public OrderInfo find(@PathVariable("userId")int userId){//模拟数据返回return new OrderInfo(1003,"保温杯",50,1, LocalDateTime.now(),1001);}}​

启动 provider8002, 测试 7001

子模块 cloud-eureka-consumer-80

pom.xml

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.ly</groupId><artifactId>cloud-eureka-common-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies>

启动类

package com;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApp80 {public static void main(String[] args) {SpringApplication.run(ConsumerApp80.class,args);}
}

配置文件

 ​#设置端口号server:port: 80​​eureka:client:fetch-registry: true #是提供者,不是注册中心 ,可省略register-with-eureka: false #向注册中心 不注册服务,因此 是消费服务的service-url: #服务地址defaultZone: http://localhost:7001/eurekaspring:application:name: consumer80      # 设置应用名, 注意, 值 不允许使用 下划线​

配置类 注入 RestTemplate

 package com;​​import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;​/*** 配置类*/@Configurationpublic class MyConfig {​@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}}​

controller

 package com.controller;​import com.ly.entity.OrderInfo;import com.ly.entity.User;import org.springframework.beans.factory.annotation.Autowired;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;​@RestControllerpublic class TestController {​@Autowiredprivate RestTemplate restTemplate;​/*** 模拟查询 用户信息* @param id* @return*/@GetMapping("/user/{id}")public User queryUser(@PathVariable("id")int id){//访问 8001 获得 数据return restTemplate.getForObject("http://localhost:8001/user/1",User.class);​}​/*** 模糊查询订单* @param id* @return*/@GetMapping("/order/{id}")public OrderInfo queryOrder(@PathVariable("id")int id){//访问 8002 获得数据return restTemplate.getForObject("http://localhost:8002/order/3",OrderInfo.class);}​​}​

启动 consumer 进行 测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/838648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈-数据分析之道--数据思维的培养

第一篇数据思维 数据分析中最重要的是数据思维&#xff0c;对于业务场景中常见的问题&#xff0c;只要有分析问题的思路和方法&#xff0c;无论用什么工具都可以得到结果。 数据思维是数据分析师分析问题的思路和角度。 第一章&#xff0c;什么是数据思维 什么是数据治理&a…

适合建站的香港服务器有哪些,企业和个人建站的

香港服务器适合外贸建站、个人和企业建站&#xff0c;尤其是中小企业官网非常适合放在香港服务器上&#xff0c;因为香港服务器在国内外的访问速度都很快&#xff0c;也就意味着全球客户都能访问到你的网站。 对于很多新手小白来说不知道怎么才能买到靠谱稳定的香港服务器&…

mysql主从热备+keepalived 部署mysql高可用主备模式

目录 1、环境准备 2、分别在主服务器和备用服务器上安装keepalived 3、修改keepalived服务的配置文件 3.1 修改主服务器上的keepalive服务的配置文件 3.2 修改备用服务器上的keepalive服务配置文件 4、编写mysql监控脚本放到主服务器上 5、在主服务器和备用服务器上查看…

水泡传感器内部结构

水泡传感器内部结构&#xff1a; 水泡传感器放大电路 电路是基于1.6V做的TIA I2V&#xff0c; 也就是输出部分基于1.6V做电压的增加或减少。

Milvus 快速入门

引言 在本篇文章中&#xff0c;我们将介绍 Milvus 的基本概念&#xff0c;并通过一个简单的示例展示如何在 Milvus 中创建集合、插入向量和执行搜索。最后&#xff0c;我们将概览 Milvus 提供的 API。 一、基本概念 1.1 集合 (Collection) 在 Milvus 中&#xff0c;集合类似…

如何组织 Vue 项目

介绍 在启动 Vue 项目时&#xff0c;思考项目结构至关重要。主要考虑因素是预期项目的规模。在本篇博文中&#xff0c;我将探讨适用于不同规模 Vue 项目的各种结构。这个考虑与康威定律相吻合&#xff1a; “设计系统的组织受限于产生这些组织沟通结构的设计。” - 梅尔康威 基…

C语言之指针初阶

目录 前言 一、内存与地址的关系 二、指针变量 三、野指针 四、const 五、传值调用与传址调用 总结 前言 本文主要介绍C语言指针的一些基础知识&#xff0c;为后面深入理解指针打下基础&#xff0c;因此本文内容主要包括内存与地址的关系&#xff0c;指针的基本语法&…

WebRTC实时音视频通话之语音通话设计与实践

一、背景 在移动互联网流量时代&#xff0c;很多业务场景都有音视频通信的需求&#xff0c;比如IM场景&#xff0c;除了文字交流还需要音视频通话进行实时交互。为了帮助58、赶集、安居客等业务线更好的为用户提供服务&#xff0c;节约沟通成本&#xff0c;提升效率&#xff0…

【Linux】19. 习题②

2022-11-12_Linux环境变量 1. 分页存储(了解) 一个分页存储管理系统中&#xff0c;地址长度为 32 位&#xff0c;其中页号占 8 位&#xff0c;则页表长度是__。 A.2的8次方 B.2的16次方 C.2的24次方 D.2的32次方 【答案解析】A 页号即页表项的序号&#xff0c;总共占8个二进制…

STM32的FLASH学习笔记

不同型号的 STM32&#xff0c;其 FLASH 容量也有所不同&#xff0c;最小的只有 16K 字节&#xff0c;最大的则达到了1024K 字节。大容量产品的闪存模块组织如图所示&#xff1a; STM32 的闪存模块由&#xff1a;主存储器、信息块和闪存存储器接口寄存器等 3 部分组成。 ​ ①主…

Java环境搭建(二)Notepad++和IDEA的下载

Notepad&#xff08;不推荐使用&#xff09; 高级记事本 下载地址 Notepad (juxinwk1.cn) 下载安装后一直下一步就可以了 注&#xff1a;改一下路径还有建立快捷方式&#xff08;自己选择&#xff09; IDEA 集成环境 下载地址 IntelliJ IDEA – the Leading Java and Kotl…

React 第三十二章 虚拟DOM

面试题&#xff1a;什么是虚拟DOM&#xff1f;其优点有哪些&#xff1f; 标准且浅显的答案 虚拟dom本质上就是一个普通的 JS 对象&#xff0c;用于描述视图的界面结构 虚拟 DOM 最早是由 React 团队提出来的&#xff0c;因此 React 团队在对虚拟 DOM 的定义上面有绝对的话语权。…

若依-生成主子表

1. sql语句建表导入到数据库中&#xff1a; -- ---------------------------- -- Table structure for t_ques————主表 -- ----------------------------CREATE TABLE ques (ques_id INT NOT NULL AUTO_INCREMENT COMMENT Id,name VARCHAR(255) NOT NULL COMMENT 测评名称…

未授权访问:Rsync 未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、利用rsync下载任意文件 5、利用rsync反弹shell 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验&#xff0c;一共有好多篇&#xff0c;内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c…

ApiHug - 闭门造车, 出门合辙

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Nex…

RocketMQ:新增consumer消费组group从最新消息开始消费skip last offset message

场景 想创建一个新的consumer去消费一个已经再使用的topic时&#xff0c;默认情况下会从topic中的第一条消息开始消费&#xff0c;大多数情况是需要从最新的消息开始。然后再使用CONSUME_FROM_LAST_OFFSET设置时并不会对新的consumer生效&#xff0c;它只是在停用consumer重新启…

MySQL单表查询案例演示

目录 一、创建数据库lianxi 二、选择数据库为lianxi 三、新建一个数据表grade&#xff0c;在grade表中插入数据 四、开始进行查询操作&#xff08;验证表中数据&#xff09; 1、查询1945班的成绩信息 2、查询1945班&#xff0c;语文成绩大于60小于90的成绩信息 3、查询学…

优雅谈论大模型8:神经网络与矩阵

向量与矩阵 上个章节的神经网络是为了解Transformer或者Mamba做好铺垫&#xff0c;在和后辈交流过程中发现有个障碍&#xff0c;那就是向量和矩阵。其实向量和矩阵的表达方式不是所有人都很习惯。在继续下面的章节之前小编认为有必要将向量、矩阵和神经网络做下补充解释。 向…

18.双线性插值缩放算法的matlab与FPGA实现

一篇文章为你讲透双线性插值 简介 1.什么是插值 图片放大是图像处理中的一个特别基础的操作。几乎在每一个图片相关的项目中&#xff0c;从传统图像处理到i深度学习&#xff0c;都有应用。   简单来说&#xff0c;插值指利用已知的点来“猜”未知的点&#xff0c;图像领域插…

华为OD机试【分奖金】(java)(100分)

1、题目描述 公司老板做了一笔大生意&#xff0c;想要给每位员工分配一些奖金&#xff0c;想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序&#xff0c;每个人随机抽取一个数字。按照工号的顺序往后排列&#xff0c;遇到第一个数字比自己数字大的&#xff0c;那么&…