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

springcloud - 2021.0.3版本 - (一)服务注册nacos+feign

一,注册中心

最新版使用的是nacos,可替换为eureka,zookeeper,使用方式大同小异,这里不做扩展。

下载安装:(有机会重装时再补上)

管理页面:http://localhost:8848/nacos/index.html

二,搭建一个springcloud工程

1,创建一个maven 父工程,pom.xml如下:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qi.study</groupId><artifactId>springcloud</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><properties><java.version>18</java.version><spring-boot.version>2.7.3</spring-boot.version><spring-cloud.version>2021.0.3</spring-cloud.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.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 依赖 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies --><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 依赖 --><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies --><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><modules><module>nacos-server</module><module>app-web</module><module>app-service</module></modules>
</project>

2,创建三个子工程

<module>nacos-server</module>
<module>app-web</module>
<module>app-service</module>

以nacos-server为例,添加以下配置代码

1)pom.xml

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.qi.study</groupId><artifactId>springcloud</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>nacos-server</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>		
</project>

2,application.yml

server:port: 8080spring:application:name: nacos-servercloud:nacos:discovery:server-addr:  127.0.0.1:8848

3,Application.java

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

其他两个工程,app-web 和 app-service 同上面一样,只是改一下application.yml配置文件中的端口号和服务名称

#app-web
===============================================================
server:port: 8081spring:application:name: app-webcloud:nacos:discovery:server-addr: 127.0.0.1:8848===============================================================#app-service
===============================================================
server:port: 8082spring:application:name: app-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848

分别启动三个项目,在nacos服务注册中心查看是否注册成功:

三,添加feign远程接口的调用测试

1,调用过程:app-web(controller) - feignClient - app-service(controller)

2,在工程app-web中添加feign依赖包:

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--引入openfeign,必须要引入loadbalancer,否则无法启动--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

3,在启动类Application.java中通过注解@EnableFeignClients开启feign功能

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

4,app-web 添加controller测试接口

package com.qi.study.springcloud.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import com.qi.study.springcloud.feignClient.AppServiceClient;@RestController
public class HelloWorldController {private final static Logger LOGGER = LoggerFactory.getLogger(HelloWorldController.class);@Autowiredprivate AppServiceClient appServiceClient;@GetMapping("/helloWorld")public String helloWorld (@RequestParam(required = false) String msg) {LOGGER.info("app-web 访问helloWorld接口入参: {}", msg);return appServiceClient.helloWorld(msg);}
}

app-web 添加feignclient远程调用接口,重要注解@FeignClient(value = "app-service")

package com.qi.study.springcloud.feignClient;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;/*** 通过feign远程调用服务app-service的http接口* 特别注意:@FeignClient这里的value要与app-service在nacos中注册的名称一致,否则无法找到* @author Admin**/
@FeignClient(value = "app-service")
public interface AppServiceClient {@GetMapping("/hello")String helloWorld(@RequestParam(value = "msg", defaultValue = "world",required = false) String msg);
}

app-service 添加逻辑实现接口

package com.qi.study.springcloud.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {private final static Logger LOGGER = LoggerFactory.getLogger(HelloController.class);@GetMapping("/hello")public String hello(@RequestParam(value = "msg", defaultValue = "world" ,required = false) String msg) {LOGGER.info("app-service访问接口hello入参: {}", msg);return "say hello - ".concat(msg);}
}

同时启动app-web和app-service,访问测试:

 5,feign还支持负载均衡,无需额外配置,保持app-service服务开启,修改端口号为8083再次启动,可以看到app-service注册的服务变为了两个

多次调用上面的测试接口就能看到两个app-service服务轮流返回数据。 

四,源代码下载:https://download.csdn.net/download/MyNoteBlog/87447400

相关文章:

springcloud - 2021.0.3版本 - (一)服务注册nacos+feign

一&#xff0c;注册中心 最新版使用的是nacos&#xff0c;可替换为eureka&#xff0c;zookeeper&#xff0c;使用方式大同小异&#xff0c;这里不做扩展。 下载安装&#xff1a;&#xff08;有机会重装时再补上&#xff09; 管理页面&#xff1a;http://localhost:8848/naco…...

C++教程(初级,有基础)

C教程&#xff08;初级&#xff0c;有基础&#xff09; #include <iostream> using namespace std; int main() { /*对应printf("")*/cout << "Hello, world!" << endl;//cout << "Hello, world!" << "\n&q…...

字符编码及转换

什么是字符编码字符编码&#xff08;Character encoding&#xff09;也称字集码&#xff0c;是把字符集中的字符&#xff0c;编码为指定集合中的某一对象&#xff08;例如&#xff1a;比特模式、自然数序列、8位组或者电脉冲&#xff09;&#xff0c;以便文本在计算机中存储或者…...

redis原理

文章目录一、Redis数据结构1.1.动态字符串SDS1.2 intset1.3 Dict1.4 ZipList1.5 QuickList1.6 SkipList1.7 RedisObject二、Redis五大基本数据类型底层2.1.String2.2.List2.3.Set2.4.ZSet2.4.Hash三、Redis网络模型3.1.用户空间和内核空间3.2.阻塞IO3.3.非阻塞IO3.4.IO多路复用…...

kettle开发-Day37-SQ索引优化

前言&#xff1a;在上一个生产项目中&#xff0c;有个单表数据超249G了&#xff0c;里面存储的数据时间跨度就1年左右&#xff0c;那为啥会出现这种情况呢&#xff1f;数据来源为&#xff0c;一个生产基地所有电表的每分钟读数&#xff0c;一个基地大概500个电表左右&#xff0…...

【camera之3a】AE

文章目录sensorAEsensor 分辨率 常见分辨率的感性表述即30万、100万、200万&#xff0c;正确表述应为0.3M、1M、2M&#xff0c;其中M代表百万&#xff0c;是像素单位。sensor分辨率即指在单位面积上&#xff0c;像素的个数&#xff0c;数值越大 &#xff0c;则代表像素点越多&…...

Docker-Consul概述以及集群环境搭建

一、Docker consul概述容器服务更新与发现&#xff1a;先发现再更新&#xff0c;发现的是后端节点上容器的变化&#xff08;registrator&#xff09;&#xff0c;更新的是nginx配置文件&#xff08;agent&#xff09;egistrator&#xff1a;是consul安插在docker容器里的眼线&a…...

性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

四、Jmeter配置InfluxDB4.1 后端监听器(BackendListener)介绍1、什么是后端监听器(BackendListener)&#xff1f;源码给出的解释是&#xff1a;BackendListener是一种异步监听并获取到测试结果的实现类。也就是说发出的如http等响应请求的结果&#xff0c;都会被封装在SampleRe…...

图数据建模基础

Neo4j 图的组件 节点&#xff08;Nodes&#xff09;标签&#xff08;Labels&#xff09;关系&#xff08;Relationships&#xff09;属性&#xff08;Properties&#xff09;建模过程 了解领域并为应用程序定义特定用例&#xff08;问题&#xff09;。开发初始图形数据模型。 对…...

nodejs篇 process模块

目录 前言 监听回调 beforeExit 、exit、uncaughtException beforeExit exit uncaughtException Process常用属性 stdout stdin process方法 process.cwd()&#xff0c;process.chdir() process.nextTick() process.exit() process.kill() 前言 process是nodejs提…...

JavaScript高级程序设计读书分享之3章——3.4数据类型

JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 ECMAScript 有 6 种简单数据类型&#xff08;也称为原始类型&#xff09;&#xff1a;Undefined、Null、Boolean、Number、String 和 Symbol&#xff08;es6新增&#xff09;。 还有一种复杂数据类型叫…...

棱形打印--进阶2(Java)

棱形打印 问题 * *** ***** ******* ********* ******* ***** *** * * * …...

清除 git 所有历史提交记录,使其为新库

清除 git 所有历史提交记录&#xff0c;使其为新库需求方案需求 基于以前的仓库重新开发&#xff0c;这样可保留以前的配置等文件&#xff0c;但是需要删除全部的历史记录、tag、分支等。 方案 创建新的分支 使用 --orphan 选项&#xff0c;可创建1个干净的分支&#xff08;无…...

pyTorch下载和cuda下载以及学习笔记

pytorch官方网站&#xff0c;cuda官方网站 CUDA下载&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive CUDNN下载&#xff1a;https://developer.nvidia.com/rdp/cudnn-download pytorch下载&#xff1a;pytorch.org 任务管理器中只显示CUDA占用的专用内存&#…...

【学习总结】IMU预积分推导

本文仅用于记录自己学习总结。记录IMU预积分推导过程&#xff0c;不包含具体原理。 符号表示 RRR: 表示旋转矩阵 vvv: 表示速度 ppp: 表示位移 ExpExpExp: 指数映射&#xff0c;将旋转向量映射为旋转矩阵 w~\widetilde{w}w: 角速度观测值 f~\widetilde{f}f​: 加速度观测值 bg…...

天猫商城自动化python脚本(仅供初学者学习使用)

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。我的…...

代码随想录第十一天(459)

文章目录459. 重复的子字符串答案思路暴力破解移动匹配459. 重复的子字符串 也不知道为啥这个提示简单题…… 答案思路 暴力破解 例如&#xff1a;abcabc 移位一次&#xff1a;cabcab 移位两次&#xff1a;bcabca 移位三次&#xff1a;abcabc 现在字符串和原字符串匹配了…...

线程及线程池学习

1 线程和进程的区别&#xff1f;进程&#xff1a;进程指正在运行的程序。线程&#xff1a;线程是进程中的一个执行单元&#xff0c;负责当前进程中程序的执行&#xff0c;一个进程中至少有一个线程。同一个进程中的多个线程之间可以并发的执行。2 创建线程有哪几种方式&#xf…...

SpringBoot整合(四)整合Ehcache、Redis、Memcached、jetcache、j2cache缓存

​ 企业级应用主要作用是信息处理&#xff0c;当需要读取数据时&#xff0c;由于受限于数据库的访问效率&#xff0c;导致整体系统性能偏低。 ​ 为了改善上述现象&#xff0c;开发者通常会在应用程序与数据库之间建立一种临时的数据存储机制&#xff0c;该区域中的数据在内存…...

想要的古风女生头像让你快速get

如今我看到很多人都喜欢用古风女生当作头像&#xff0c;那么今天我就来教大家如何快速得到一张超美的古风女生头像~ 上图就是我使用 APISpace 的 AI作画(图像生成)服务 快速生成的古风女生头像&#xff0c;不仅可以限定颜色&#xff0c;还可以选择『宝石镶嵌』或『花卉造型』这…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...