Feign 接口启动报错总结记录
一、报错根源
Spring Cloud OpenFeign 对注解强制校验,@PathVariable、@RequestParam 必须显式填写 value 属性,只写 required 或完全空注解直接启动抛异常。
二、先后出现两类错误
错误 1:PathVariable annotation was empty on param 0
- 出错代码
java
运行
// 错误 @PathVariable String shippingCode- 原因 @PathVariable 未指定 value,Feign 无法识别路径参数名称。
- 修复方案
java
运行
// 正确 @PathVariable(value = "shippingCode") String shippingCode错误 2:RequestParam.value () was empty on parameter 1
- 出错代码
java
运行
// 错误,仅写required,缺失value @RequestParam(required = false) String apiTypeCode @RequestParam(required = false) String apiUri @RequestParam(required = false) String orgId @RequestParam(required = false) String systemCode- 原因 @RequestParam 缺少 value 参数名定义,Feign 解析参数失败。
- 修复方案
java
运行
// 正确 @RequestParam(value = "apiTypeCode", required = false) String apiTypeCode @RequestParam(value = "apiUri", required = false) String apiUri @RequestParam(value = "orgId", required = false) String orgId @RequestParam(value = "systemCode", required = false) String systemCode三、通用规范(Feign 接口强制遵守)
- @PathVariable:无论是否必填,必须带 value = "路径变量名";
- @RequestParam:无论是否必填,必须带 value = "请求参数名";
- @RequestBody:无强制 value 限制,无需修改;
- 所有路径、查询参数注解缺一不可省略 value,否则服务初始化直接崩溃。
四、无关日志(仅警告,不影响启动)
- RocketMQ Connection refused:127.0.0.1:9876 原因:未启动 RocketMQ NameServer,仅连接警告,不是服务崩溃根因;
- Tomcat APR、CGLIB final 方法、线程内存泄漏类 WARN 底层容器 / 代理提示,不阻断项目启动,可忽略。