> 技术文档 > 某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024


你好,我是Qiuner. 为帮助别人少走弯路而写博客

这是我的 github https://github.com/Qiuner ⭐️

gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^)

想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎

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

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

文章目录

  • 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中添加配置

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

  • 如图所示,你发现自己使用docker start mysql/nacos打开了mysql容器和nacos容器,也没有其他问题,但还是一直报错

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 这是因为nacos启动需要mysql中的数据库数据,所以你需要先启动mysql容器,然后启动nacos

  • 而且mysql容器启动也需要时间,所以不能连着敲

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 具体情况可以打开 docker logs naocs进行查看

网关概述与粗浅使用

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 单体项目对用户账号、多模块业务进行一次认证就好了,而微服务项目将认证说不定都拆分成一个模块,因此需要一个网关,网关本身也是微服务中的一个模块

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 配置网关路由为重点

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 通过路由网关,实现了什么效果?

  • 本来需要访问8081端口才能到数据,但有了网关后,访问8080也能得到8081模块的数据

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

网关路由的具体属性

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

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

网关登录校验

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

GlobalFilter

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

如何找到NettyRoutingFilter?

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 使用ctrl+左击这里

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 在这个包里面,找找就到了

GatewayFilter

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 关于工厂类,可以看我的博客 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

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 全局过滤器局部过滤器也是通过实现的Ordered接口数字大小来决定谁先执行的
过滤器携带参数

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

案例:登录校验

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

报错Failed to bind properties under ‘hm.jwt.location’ to cn.hutool.core.io.resource.Resource:

***************************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文件夹下的东西,再次导入一遍

网关传递用户

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 这里指挥拦截从网关发过来的请求

OpenFeign

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 就是微服务之间,互相需要调用。这个调用不走网关,因此需要再写一个类似拦截器的东西保存用户id

总结 微服务登录体系下三种拦截器

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

特性 网关拦截器 (GlobalFilter) 微服务拦截器 (HandlerInterceptor) OpenFeign拦截器 (RequestInterceptor) 作用范围 所有进入网关的请求 微服务内部的请求处理 Feign 客户端发起的 HTTP 请求 典型用途 鉴权、日志记录、流量控制、请求预处理 认证与授权、日志记录、数据验证 修改请求、添加认证信息、日志记录 实现接口 GlobalFilter HandlerInterceptor RequestInterceptor 触发时机 请求进入网关时 请求到达控制器之前和之后 Feign 客户端发起请求前 依赖框架 Spring Cloud Gateway Spring MVC OpenFeign 配置复杂度 中等 低 低 适用场景 全局拦截、网关层面的统一处理 各微服务内部的请求预处理和后处理 Feign 调用时需要统一处理请求信息+
  • Feign 客户端是用来发送请求的

配置共享

添加配置

第一步

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

第二步

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

拉取配置

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • nacos会先运行,但会面对加载失败问题,因为nacos的配置还没加载进来

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 使用bootstrap来解决问题,解决了先运行的时候配置没有加载的问题

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

  • 添加一个bootstrap和修改原本配置即可

配置热更新

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

第一步:添加使用的文件

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

第二步:修改原本写死的文件

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024

第三步:在nacos中添加配置

某马2024SpringCloud微服务开发与实战 bug记录与微服务知识拆解(MybatisPlus、Docker、MQ、ES、Redis)第四章_springcloud2024