尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【电商项目】新手CRUD踩坑记录与问题复盘——删除

【电商项目】新手CRUD踩坑记录与问题复盘——删除 看过上一期踩坑复盘的小伙伴都知道我在启动就报错了这篇也是一、非法状态异常1.1 找不 Dubbo 服务的服务提供者意思是状态非法异常找不到AdminService这个 Dubbo 服务的服务提供者。常见根因提供者服务未启动提供 AdminService 的后端项目没有运行没有向 Nacos 注册服务注册中心不一致消费者、提供者连接的不是同一个 Nacos 地址 / 命名空间网络不通本机无法 ping 通 / 访问虚拟机启动类缺失EnableDubbo注解Dubbo 客户端未初始化无法解析 DubboReference 订阅服务DubboReference未配置 checkfalse默认启动强校验服务存在提供者离线直接启动崩溃提供者未成功注册到 Nacos依赖错误小编排查发现了我问题属于4、5、7问题 1ManagerApiApplication启动类 缺少EnableDubbo注解Dubbo 无法正确扫描和处理DubboReference。问题 2shopping_manager_api的 pom.xml 中直接依赖了shopping_admin_service微服务之间通过 Dubbo RPC 通信不应有 Maven 直接依赖只需依赖shopping_common包含接口定义。我当时直接copy了别的模块下的pom忘修改了问题3应添加check false让应用在提供者未启动时也能正常启动。注解速忆由于学习注解是速通的很多记得不清晰在此记录一下EnableDubbo开启 dubbo 功能识别 Reference 消费者、Service 提供者注解。 【SpringBoot 默认不加载 Dubbo 组件该注解激活 Dubbo 的 Bean 注册、RPC 通信逻辑。】EnableDiscoveryClient开启服务注册与发现功能。 【让项目启动后主动把自身服务注册到 Nacos/Eureka 等注册中心同时能拉取其他服务节点。】RefreshScopeNacos 配置变更时动态刷新 Bean 配置。 【普通加载配置是一次性的注解标记的 Bean 会监听配置中心推送更新。】MapperScan(com. ...)扫描 mapper启动时加载 mapper 接口。 【直接统一扫描避免 Mapper 无法被注入报错。】DubboReference(check false) 默认启动时 Dubbo 会校验对应服务提供者是否在线无提供者直接启动报错设为 false 启动不校验调用时才判断适配服务启动顺序不固定场景true时容器初始化必须找到服务提供者找不到直接启动失败1.2 请求参数类型适配异常意思是非法状态异常可选 long 类型参数id传值为空但该参数被定义为基本数据类型基本类型无法接收 null 值我当时看这个没明白后来知道白话就是我的接口参数写的是long id基本数据类型前端没传 id 参数Spring 要给这个参数赋值nulllong是基本类型默认值为0不能接受null直接抛出异常。解决方案把long id改成Long id包装类支持 null并显式添加RequestParam注解这里区分一下这两种路径参数注解PathVariable从 URL 路径中提取参数如/delete/1中的1RequestParam从查询参数中提取如/delete?id11.3 启动顺序错误启动报错如下问题Dubbo 服务注册发现问题服务提供者不可用根因启动顺序错误先启动 Dubbo 消费者提供者还未启动、未注册到 Nacos次要诱因提供者漏写DubboService注解服务不会注册注册中心消费者同样找不到1.4 总结发现这类错误经过这几个报错小编总结发现IllegalStateException报错在 SpringWeb/Dubbo 开发里绝大多数场景都是「配置 / 注解 / 参数 / 组件状态不合法」导致的其次就是1.3这种框架层面启动异常还有一种就是架构层面类文件放置的问题这都是小编遇到过的可供排查。我当时给service接口放非common模块下了二、测试报错404之前测试报错500解决之后有报了404。一开始我对404的报错原因有误解这里记录一下404含义服务器接收到请求但找不到对应接口/资源。可能成因请求路径错误URL地址拼写、大小写、上下文路径写错。请求方式不匹配接口是PostMapping前端用GET访问反之亦然。Controller未被Spring扫描启动类扫描范围没包含控制器包接口未注册。RequestMapping类方法拼接路径错误类上前缀方法路径拼接和访问地址对不上。静态资源不存访问html、图片等静态文件路径错误。接口被拦截器直接放行跳过、重定向错误。检查发现是参数接收注解 请求地址不匹配导致的。纠正后又报错了报错显示 是端口被占用了直接杀死端口就好了了解到成因是因为可能之前在关闭运行的时候没有关闭干净导致的。查找占用 xxx 端口的进程:netstat -ano | findstr 20881根据查到的 PID 杀掉进程把 PID 整个替换:taskkill /PID PID /F
返回列表