nested exception is java.lang.IllegalStateException: PathVariable annotation was empty on param 0.
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/282
错误显示:
使用SpringBoot进行开发时,使用feign组件进行远程调用,可能会产生了这样的异常信息:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxxx': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxx': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxxx': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: PathVariable annotation was empty on param 0.
重点看这句话的异常信息
nested exception is java.lang.IllegalStateException: PathVariable annotation was empty on param 0.
原因:
从异常信息中看出,是因为PathVariable注解有问题!也就是@PathVariable注解的第0个值为空!
当时声明明Feign接口方法时候,使用@PathVariable注解的接口方法:
@GetMapping("/account/{clientId}")
public User get(@PathVariable String clientId);
path路径部分只有一个clientId变量,那么说在“was empty on param 0”,也就是说clientId值没有取到!
解决:
将@PathVariable修改为@PathVariable(value="clientId")的写法,明确带有value="clientId"!
@GetMapping("/account/{clientId}")
public User get(@PathVariable(value="clientId") String clientId);
重新编译即可!
一句话总结:
使用feign时,如果参数中带有@PathVariable则需要使用value显示指明参数名
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/282