前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录 Day4

黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录 Day4

作者头像
Qiuner
发布2024-07-19 18:31:25
60
发布2024-07-19 18:31:25
举报
文章被收录于专栏:杂烩
  • 这篇有不少bug记录与方便您复制的代码,相信一定能节省学习时间同时达到更好的效果
  • 本博客要与原文档搭配使用 day04-微服务02 - 飞书云文档 (feishu.cn)
  • 初学微服务的人,可能会三种不同的拦截器感到迷惑,但其实并不难,我再此也花了一些笔墨来介绍。相信您看了后很快就能理解
  • 原本文档已经介绍的很详细了,很难有多余的补充,就是天的课引导不够好吧,可能会让人迷糊一下

2024最新SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)Day 4

我启动不了项目!!它一直滚动报错!!!项目报错java.util.concurrent.ExecutionException: com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception

  • 如图所示,你发现自己使用docker start mysql/nacos打开了mysql容器和nacos容器,也没有其他问题,但还是一直报错
image-20240622161958497
image-20240622161958497
  • 这是因为nacos启动需要mysql中的数据库数据,所以你需要先启动mysql容器,然后启动nacos
  • 而且mysql容器启动也需要时间,所以不能连着敲
image-20240710152231514
image-20240710152231514
  • 具体情况可以打开 docker logs naocs进行查看

网关概述与粗浅使用

image-20240622163328468
image-20240622163328468
  • 单体项目对用户账号、多模块业务进行一次认证就好了,而微服务项目将认证说不定都拆分成一个模块,因此需要一个网关,网关本身也是微服务中的一个模块
image-20240622163621898
image-20240622163621898
image-20240622163603100
image-20240622163603100
image-20240622163653475
image-20240622163653475
image-20240624095736881
image-20240624095736881
  • 配置网关路由为重点
image-20240625100140646
image-20240625100140646
  • 通过路由网关,实现了什么效果?
  • 本来需要访问8081端口才能到数据,但有了网关后,访问8080也能得到8081模块的数据
image-20240625100306038
image-20240625100306038

网关路由的具体属性

image-20240625100724015
image-20240625100724015
image-20240625100904101
image-20240625100904101
image-20240625101221512
image-20240625101221512
  • stripPrefix用户帮助前后端的项目不同格式请求。
  • 这里添加请求头呀、移除请求头都有局部和全局之分,通过不同的属性来进行判断

网关登录校验

image-20240625102314963
image-20240625102314963
image-20240625102449614
image-20240625102449614
image-20240625102608915
image-20240625102608915
image-20240625102736106
image-20240625102736106
GlobalFilter
image-20240711082447676
image-20240711082447676
如何找到NettyRoutingFilter?
image-20240711083334430
image-20240711083334430
  • 使用ctrl+左击这里
image-20240711083434430
image-20240711083434430
  • 在这个包里面,找找就到了
GatewayFilter
image-20240711090025305
image-20240711090025305
  • 关于工厂类,可以看我的博客 https://blog.csdn.net/qq_61654952/article/details/138126798?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172065957216800180617352%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=172065957216800180617352&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-138126798-null-null.nonecase&utm_term=%E8%AE%BE%E8%AE%A1&spm=1018.2226.3001.4450
image-20240712094133619
image-20240712094133619
  • 全局过滤器局部过滤器也是通过实现的Ordered接口数字大小来决定谁先执行的
过滤器携带参数
image-20240712094605849
image-20240712094605849

案例:登录校验

image-20240712102441376
image-20240712102441376
报错Failed to bind properties under ‘hm.jwt.location’ to cn.hutool.core.io.resource.Resource:
代码语言:javascript
复制
***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'hm.jwt.location' to cn.hutool.core.io.resource.Resource:

    Property: hm.jwt.location
    Value: "classpath:hmall.jks"
    Origin: class path resource [application.yaml] - 36:15
    Reason: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [cn.hutool.core.io.resource.Resource]

Action:

Update your application's configuration


进程已结束,退出代码为 1
  • 遇到这种情况,直接删除config文件夹下的东西,再次导入一遍

网关传递用户

image-20240712211133643
image-20240712211133643
image-20240712213302366
image-20240712213302366
image-20240712213930265
image-20240712213930265
  • 这里指挥拦截从网关发过来的请求

OpenFeign

image-20240712215210702
image-20240712215210702
  • 就是微服务之间,互相需要调用。这个调用不走网关,因此需要再写一个类似拦截器的东西保存用户id
总结 微服务登录体系下三种拦截器
image-20240712220359885
image-20240712220359885

特性

网关拦截器 (GlobalFilter)

微服务拦截器 (HandlerInterceptor)

OpenFeign拦截器 (RequestInterceptor)

作用范围

所有进入网关的请求

微服务内部的请求处理

Feign 客户端发起的 HTTP 请求

典型用途

鉴权、日志记录、流量控制、请求预处理

认证与授权、日志记录、数据验证

修改请求、添加认证信息、日志记录

实现接口

GlobalFilter

HandlerInterceptor

RequestInterceptor

触发时机

请求进入网关时

请求到达控制器之前和之后

Feign 客户端发起请求前

依赖框架

Spring Cloud Gateway

Spring MVC

OpenFeign

配置复杂度

中等

适用场景

全局拦截、网关层面的统一处理

各微服务内部的请求预处理和后处理

Feign 调用时需要统一处理请求信息+

  • Feign 客户端是用来发送请求的

配置共享

添加配置
第一步
image-20240712222358307
image-20240712222358307
第二步
image-20240712222115188
image-20240712222115188
拉取配置
image-20240712222735936
image-20240712222735936
  • nacos会先运行,但会面对加载失败问题,因为nacos的配置还没加载进来
image-20240712222920291
image-20240712222920291
  • 使用bootstrap来解决问题,解决了先运行的时候配置没有加载的问题
image-20240712223027565
image-20240712223027565
在这里插入图片描述
在这里插入图片描述
  • 添加一个bootstrap和修改原本配置即可

配置热更新

image-20240712223931620
image-20240712223931620
image-20240712223951349
image-20240712223951349
第一步:添加使用的文件
image-20240712225032188
image-20240712225032188
第二步:修改原本写死的文件
image-20240712225100740
image-20240712225100740
第三步:在nacos中添加配置
image-20240712225158593
image-20240712225158593
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2024最新SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)Day 4
    • 我启动不了项目!!它一直滚动报错!!!项目报错java.util.concurrent.ExecutionException: com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
      • 网关概述与粗浅使用
        • 网关路由的具体属性
          • 网关登录校验
            • GlobalFilter
            • 如何找到NettyRoutingFilter?
            • GatewayFilter
          • 案例:登录校验
            • 报错Failed to bind properties under ‘hm.jwt.location’ to cn.hutool.core.io.resource.Resource:
          • 网关传递用户
            • OpenFeign
              • 总结 微服务登录体系下三种拦截器
            • 配置共享
              • 添加配置
              • 拉取配置
            • 配置热更新
              • 第一步:添加使用的文件
              • 第二步:修改原本写死的文件
              • 第三步:在nacos中添加配置
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档