news 2026/8/13 12:27:34

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【电商项目】新手CRUD踩坑记录与问题复盘——删除

看过上一期踩坑复盘的小伙伴都知道我在启动就报错了,这篇也是😓

一、非法状态异常

1.1 找不 Dubbo 服务的服务提供者

意思是:状态非法异常,找不到AdminService这个 Dubbo 服务的服务提供者

常见根因

  1. 提供者服务未启动:提供 AdminService 的后端项目没有运行,没有向 Nacos 注册服务
  2. 注册中心不一致:消费者、提供者连接的不是同一个 Nacos 地址 / 命名空间
  3. 网络不通:本机无法 ping 通 / 访问虚拟机
  4. 启动类缺失@EnableDubbo注解:Dubbo 客户端未初始化,无法解析 @DubboReference 订阅服务
  5. @DubboReference未配置 check=false:默认启动强校验服务存在,提供者离线直接启动崩溃
  6. 提供者未成功注册到 Nacos
  7. 依赖错误

小编排查发现了我问题属于4、5、7:

问题 1:ManagerApiApplication启动类 缺少@EnableDubbo注解,Dubbo 无法正确扫描和处理@DubboReference

问题 2:shopping_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 等注册中心,同时能拉取其他服务节点。】

  • @RefreshScope:Nacos 配置变更时动态刷新 Bean 配置。 【普通加载配置是一次性的,注解标记的 Bean 会监听配置中心推送更新。】

  • @MapperScan("com. ..."):扫描 mapper,启动时加载 mapper 接口。 【直接统一扫描,避免 Mapper 无法被注入报错。】

  • @DubboReference(check = false) : 默认启动时 Dubbo 会校验对应服务提供者是否在线,无提供者直接启动报错;设为 false 启动不校验,调用时才判断,适配服务启动顺序不固定场景;true时,容器初始化必须找到服务提供者,找不到直接启动失败


1.2 请求参数类型适配异常

意思是:非法状态异常:可选 long 类型参数id传值为空,但该参数被定义为基本数据类型,基本类型无法接收 null 值

我当时看这个没明白,后来知道白话就是:

我的接口参数写的是long id(基本数据类型),前端没传 id 参数,Spring 要给这个参数赋值null,long是基本类型,默认值为0,不能接受null,直接抛出异常。

解决方案:long id改成Long id(包装类,支持 null)并显式添加@RequestParam注解

这里区分一下这两种路径参数注解:

  • @PathVariable从 URL 路径中提取参数(如/delete/1中的1
  • @RequestParam从查询参数中提取(如/delete?id=1

1.3 启动顺序错误

启动报错如下:

问题:Dubbo 服务注册发现问题(服务提供者不可用

根因

  1. 启动顺序错误:先启动 Dubbo 消费者,提供者还未启动、未注册到 Nacos
  2. 次要诱因:提供者漏写@DubboService注解,服务不会注册注册中心,消费者同样找不到

1.4 总结发现这类错误

经过这几个报错,小编总结发现

IllegalStateException报错在 SpringWeb/Dubbo 开发里,绝大多数场景都是

「配置 / 注解 / 参数 / 组件状态不合法」导致的

其次就是1.3这种框架层面启动异常

还有一种就是架构层面类文件放置的问题,这都是小编遇到过的,可供排查。(我当时给service接口放非common模块下了)

二、测试报错404

之前测试报错500,解决之后有报了404。一开始我对404的报错原因有误解,这里记录一下:

404含义:

服务器接收到请求,但找不到对应接口/资源

可能成因:

  1. 请求路径错误:URL地址拼写、大小写、上下文路径写错。
  2. 请求方式不匹配:接口是@PostMapping,前端用GET访问,反之亦然。
  3. Controller未被Spring扫描:启动类扫描范围没包含控制器包,接口未注册。
  4. @RequestMapping类+方法拼接路径错误:类上前缀+方法路径拼接和访问地址对不上。
  5. 静态资源不存:访问html、图片等静态文件路径错误。
  6. 接口被拦截器直接放行跳过、重定向错误

检查发现是参数接收注解 + 请求地址不匹配导致的。

纠正后又报错了,报错显示 是端口被占用了,直接杀死端口就好了,了解到成因是因为,可能之前在关闭运行的时候没有关闭干净导致的。

查找占用 xxx 端口的进程:netstat -ano | findstr 20881

根据查到的 PID 杀掉进程(把 <PID> 整个替换):taskkill /PID <PID> /F

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/13 12:26:57

南昌网站建设公司怎么选才能不掉坑?南昌做网站公司深度避坑指南与真实心声

南昌网站建设在这个互联网信息爆炸的时代,很多人可能有个误解,觉得随便找个懂电脑的大学生或者隔壁搞IT的小哥们,花几百块钱就能弄个像模像样的网站出来。毕竟在南昌,开个店容易,搞个线上展示似乎也没那么难。但作为一名在行业里摸爬滚打多年的从业者,我想掏心窝子跟各位…

作者头像 李华
网站建设 2026/8/13 12:26:58

AI工程化实践:破解效率悖论,从Prompt工程到RAG架构的落地指南

1. 这篇文章真正要解决的问题 当科技领袖们站在聚光灯下&#xff0c;描绘着AI将如何解放生产力、实现四天工作制的美好蓝图时&#xff0c;许多一线开发者和技术管理者却感到一丝困惑&#xff1a;为什么我们团队的工作时长不降反增&#xff0c;甚至有人每周要投入90小时&#xf…

作者头像 李华
网站建设 2026/8/13 12:26:08

Sunshine游戏串流:如何搭建你的私人云游戏服务器终极指南

Sunshine游戏串流&#xff1a;如何搭建你的私人云游戏服务器终极指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款功能强大的开源游戏串流服务器&#xff0c;专为…

作者头像 李华