nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

今天在打包部署升级微服务时遇到了一个异常,导致服务未能成功启动。本文将介绍这个异常的产生以及解决办法。

一下时异常的内容:

nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

这是一个非法状态异常。意思是说,第 0 个参数绑定的 value 值为空。也就是说第 0 个参数没有正确的绑定请求的参数映射中。

一看到 RequestParam.value() 异常,我们就应该联想到是 @RequestParam 注解产生的。

这个错误产生的原因是我们使用了 Feign,在配置了 @FeignClient 注解的接口上声明的方法中的参数使用了 @RequestParam 注解,但是 @RequestParam 注解并没有指定 value 属性。具体如下:

@FeignClient(name = "xttblog-cloud-producer")
public interface XttblogService {

    @RequestMapping(value = "/xttblog", method = RequestMethod.POST)
    int cal(@RequestParam(required = false) String a);
    
}

这个时候,我们在启动项目,就会出现“nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0”异常。

进而会影响到 XttblogService 实例的创建,雪崩效应,导致整个项目无法启动。

在 SpringMVC 和 Springboot 中都可以使用 @RequestParam 注解,不指定 value 的用法,为什么到了 Spring cloud 中的 Feign 这里就不行了呢?

这是因为和 Feign 的实现有关。Feign 的底层使用的是 httpclient,在低版本中会产生这个问题,高版本中已经对这个问题修复了。

参考资料

  • Fiegn Client with Spring Boot: RequestParam.value() was empty on parameter 0
  • Feign bug when use @RequestParam but not have value

nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

: » nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/251839.html

(0)
上一篇 2022年5月3日
下一篇 2022年5月3日

相关推荐

发表回复

登录后才能评论