SpringBoot增加网关服务

一、新建gateway项目

二、添加依赖

dependencies {implementation 'org.springframework.cloud:spring-cloud-starter-gateway:4.0.0'
}

三、增加路由规则配置

一个web服务、一个service服务

bootstrap.yaml:

server:port: 80
spring:application:name: gatewaycloud:nacos:discovery:server-addr: ${NACOS_ADDR:127.0.0.1:8848}namespace: ${NACOS_NAMESPACE:demo}username: nacospassword: nacosconfig:#nacos配置中心服务器地址server-addr: ${NACOS_ADDR:127.0.0.1:8848}#nacos配置中心命名空间namespace: ${NACOS_NAMESPACE:demo}#文件后缀格式file-extension: yaml#nacos配置中心分组group: ${spring.application.name}username: nacospassword: nacos#扩展文件,目前用于全局共享,下面的优先级高ext-config:- data-id: commom.yamlgroup: commonrefresh: true

application.yaml:

spring:main:web-application-type: reactivecloud:gateway:routes:#业务服务- id: web_routeuri: lb://webpredicates:- Path=/web/**filters:- RewritePath=/(?<segment>.*),/$\{segment}#支撑服务- id: service_routeuri: lb://servicepredicates:- Path=/service/**filters:- RewritePath=/(?<segment>.*),/$\{segment}

四、增加过滤器(可选)

比如认证、鉴权、日志打印等

例如:打印日志,用@Slf4j 注解来简化日志记录、

增加依赖

		compileOnly 'org.projectlombok:lombok:1.18.24' // 使用最新版本annotationProcessor 'org.projectlombok:lombok:1.18.24'implementation 'org.slf4j:slf4j-api:2.0.6'runtimeOnly 'ch.qos.logback:logback-classic:1.4.5'

代码:

@Slf4j
@Component
public class RequestLogFilter implements GlobalFilter, Ordered {private static final String START_TIME_KEY = "startTime";@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request = exchange.getRequest();String method = Objects.requireNonNull(request.getMethod()).name();String requestURI = request.getPath().toString();String remoteAddr = Objects.requireNonNull(request.getRemoteAddress()).getHostString();System.out.println("method=" + method +";requestURI= "+ requestURI+ "; remoteAddr="+remoteAddr);log.info("method=" + method +";requestURI= "+ requestURI+ "; remoteAddr="+remoteAddr);return chain.filter(exchange);}@Overridepublic int getOrder() {return 1;}
}

五、增加启动类并运行测试

@SpringBootApplication(scanBasePackages = {"com.example"})
@EnableDiscoveryClient
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}}

运行访问,用80端口

六、遇到的问题

1、启动报错

缺少依赖的包

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-07-16T16:27:44.792+08:00 ERROR 9924 --- [gateway] [           main] o.s.b.d.LoggingFailureAnalysisReporter   : ***************************
APPLICATION FAILED TO START
***************************Description:Web application could not be started as there was no org.springframework.boot.web.reactive.server.ReactiveWebServerFactory bean defined in the context.Action:Check your application's dependencies for a supported reactive web server.
Check the configured web application type.

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第240题搜索二维矩阵II

题目&#xff1a; 题解&#xff1a; func searchMatrix(matrix [][]int, target int) bool {m, n : len(matrix), len(matrix[0])x, y : 0, n-1for x < m && y > 0 {if matrix[x][y] target {return true}if matrix[x][y] > target {y--} else {x}}return f…

FFMPEG提取音频流数据

FFmpeg是一套开源的计算机程序&#xff0c;主要用于记录、转换数字音频、视频&#xff0c;并能将其转化为流。它提供了录制、转换以及流化音视频的完整解决方案&#xff0c;被誉为多媒体业界的“瑞士军刀”。 1.使用ffmpeg命令实现音频流数据提取 [wbyqwbyq ffmpeg]$ ffmpeg …

JavaEE初阶 - 文件操作和IO(一)

认识文件树形结构组织 和 目录 &#xff08;N叉树&#xff09;文件路径&#xff08;Path&#xff09;其他知识Java中操作文件File概述属性构造方法方法代码实例&#xff08;一&#xff09;代码实例&#xff08;二&#xff09;代码实例&#xff08;三&#xff09;代码实例&#…

Redis三种常用的缓存读写策略

Cache Aside Pattern&#xff08;旁路缓存模式&#xff09; 现在基本都用这个模式 Cache Aside Pattern 中服务端需要同时维系 db 和 cache&#xff0c;并且是以 db 的结果为准。 读写步骤&#xff1a; 写&#xff1a; 先更新 db&#xff0c;然后直接删除 cache 。 读 : …

电脑系统重装数据被格式化,那些文件还有办法恢复吗?

在日常使用电脑的过程中&#xff0c;系统重装或格式化操作是常见的维护手段&#xff0c;尤其是在遇到系统崩溃、病毒感染或需要升级系统时。然而&#xff0c;这一操作往往伴随着数据丢失的风险&#xff0c;尤其是当C盘&#xff08;系统盘&#xff09;和D盘&#xff08;或其他数…

LabVIEW鼠标悬停在波形图上的曲线来自动显示相应点的坐标

步骤 创建事件结构&#xff1a; 打开LabVIEW&#xff0c;创建一个新的VI。 在前面板上添加一个Waveform Graph控件。 在后面板上添加一个While Loop和一个事件结构&#xff08;Event Structure&#xff09;。 配置事件结构&#xff0c;选择Waveform Graph作为事件源&#xf…

【作业】 贪心算法1

Tips:三题尚未完成。 #include <iostream> #include <algorithm> using namespace std; int a[110]; int main(){int n,r,sum0;cin>>n>>r;for(int i0;i<n;i){cin>>a[i];}sort(a0,an);for(int i0;i<n;i){if(i>r){a[i]a[i-r]a[i];}suma[…

ActiveMQ配置延迟投递和定时投递教程

配置activemq.xml中的<broker>标签添加schedulerSupport"true" schedulerSupport"true"更改完成重启生效 四大属性解释 Property nametypedescriptionAMQ_SCHEDULED_DELAYlong延迟投递的时间AMQ_SCHEDULED_PERIODlong重复投递的时间间隔AMQ_SCHEDU…

动手学深度学习——5.卷积神经网络

1.卷积神经网络特征 现在&#xff0c;我们将上述想法总结一下&#xff0c;从而帮助我们设计适合于计算机视觉的神经网络架构。 平移不变性&#xff08;translation invariance&#xff09;&#xff1a;不管检测对象出现在图像中的哪个位置&#xff0c;神经网络的前面几层应该对…

阿里云国际站:海外视频安全的DRM加密

随着科技的进步&#xff0c;视频以直播或录播的形式陆续开展海外市场&#xff0c;从而也衍生出内容安全的问题&#xff0c;阿里云在这方面提供了完善的内容安全保护机制&#xff0c;适用于不同的场景&#xff0c;如在视频安全提供DRM加密。 由图可以了解到阿里云保护直播安全的…

吴恩达大模型系列课程《Prompt Compression and Query Optimization》中文学习打开方式

Prompt Compression and Query Optimization GPT-4o详细中文注释的Colab观看视频1 浏览器下载插件2 打开官方视频 GPT-4o详细中文注释的Colab 中文注释链接&#xff1a;https://github.com/Czi24/Awesome-MLLM-LLM-Colab/tree/master/Courses/Prompt-Compression-and-Query-Op…

鼠标录制工具怎么挑选?9款电脑鼠标录制工具分享(2024)

你知道鼠标录制工具吗&#xff1f;鼠标录制工具通过记录和回放用户的操作&#xff0c;帮助自动化重复性任务&#xff0c;提高工作效率和精确性。它可以帮助用户简化很多繁琐的操作步骤&#xff0c;非常适合运用在电脑自动化任务、游戏自动化中&#xff0c;给大家整理了2024年9款…

【学习笔记】einsum(爱因斯坦求和)

文章目录 einsum&#xff08;爱因斯坦求和&#xff09;基本语法对角线操作矩阵乘法向量点积张量积 总结 einsum&#xff08;爱因斯坦求和&#xff09; einsum 是 Python 中 NumPy 库的一个函数&#xff0c;它提供了一种非常灵活的方式来进行多维数组的对角线操作、矩阵乘法、向…

【芯片设计- RTL 数字逻辑设计入门 番外篇 12 -- SoC 设计中的 ECO】

请阅读【ARM AMBA AXI 总线 文章专栏导读】 请阅读【芯片设计 RTL 数字逻辑设计扫盲 】 转自&#xff1a;简单了解SoC设计中的ECO — 快乐的芯片工程师 文章目录 ECO 概述Pre-Mask ECO&#xff08;预掩模ECO&#xff09;芯片设计前端与后端的区别 Post-Mask ECO&#xff08;后…

Linux+InternStudio 关卡(test)

任务地址&#xff1a; https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Linux/task.md 文档 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Linux/readme.md 任务 ssh连接 端口映射 gradio页面 笔记&#xff1a; 1.端口映射阶段&#xff1a;输入密…

[经验] 陏唐英雄之薜刚反唐 #知识分享#其他#媒体

陏唐英雄之薜刚反唐 1、陏 陏是一种古代汉字&#xff0c;它的拼音为du&#xff0c;意思是田地里的小路。这个字的形状非常特殊&#xff0c;由一个“阝”字部和一个“多”字部组成。在古代&#xff0c;人们用来描述田地中间的窄路或是用来分隔不同农田之间的小路。陏这个字在日…

[python]pycharm设置清华源

国内镜像源有以下几个&#xff0c;因为都是国内的&#xff0c;基本速度差不了太多。 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 阿里云&#xff1a;http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣&…

uni-app:文字竖直排列,并且在父级view中水平竖直对齐

一、效果 二、代码 <template><view class"parent"><text class"child">这是竖直排列的文字</text></view> </template> <script>export default {data() {return {}},methods: {},}; </script> <sty…

Apache Flink 入门

零、概述 Apache Flink 是一个高性能的开源分布式流处理框架&#xff0c;专注于实时数据流的处理。 它设计用于处理无界和有界数据流&#xff0c;在内存级速度下提供高效的有状态计算。 Flink 凭借其独特的Checkpoint机制和Exactly-Once语义&#xff0c;确保数据处理的准确性…

首个WebAgent在线评测框架和流程数据管理平台来了,GPT-4、Qwen登顶闭源和开源榜首!

在当今科技迅速发展的时代&#xff0c;大型语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;正以前所未有的速度改变着我们与数字世界的互动方式。基于LLM的智能代理&#xff08;LLM Agent&#xff09;&#xff0c;从简单的信息搜索到复杂的网页操作&…