1.错误信息

2020-07-31 20:47:54.129 [http-nio-31200-exec-5] DEBUG o.s.b.w.s.f.OrderedRequestContextFilter - Bound request context to thread: org.apache.catalina.connector.RequestFacade@37476582
2020-07-31 20:47:54.141 [http-nio-31200-exec-5] ERROR c.x.f.exception.ExceptionCatch - catch exception:Type definition error: [simple type, class com.xuecheng.framework.domain.cms.response.CmsPageResult]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.xuecheng.framework.domain.cms.response.CmsPageResult`, problem: null
 at [Source: (PushbackInputStream); line: 1, column: 85]
2020-07-31 20:47:54.142 [http-nio-31200-exec-5] DEBUG o.s.b.w.s.f.OrderedRequestContextFilter - Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@37476582

2.原因

com.xuecheng.framework.domain.cms.response.CmsPageResult这个CmsPageResult对象没有显式的无参构造函数

3.解决方法

CmsPageResult手动添加显式无参构造函数,或者使用lombok中的@NoArgsConstructor注解,

image-20200731214029689

4.总结

Feign 工作原理如下:

1、 启动类添加 @EnableFeignClients 注解,Spring会扫描标记了@FeignClient 注解的接口,并生成此接口的代理对象

2、 @FeignClient(value = XcServiceList.XC_SERVICE_MANAGE_CMS) 即指定了 cms 的服务名称,Feign 会从注册中心获取 cms 服务列表,并通过负载均衡算法进行服务调用。

3、在接口方法 中使用注解 @GetMapping("/cms/page/get/{id}"),指定调用的urlFeign 将根据 url 进行远程调用。

使用 Feign 有哪些需要注意的地方?

SpringCloud 对 Feign 进行了增强兼容了 SpringMVC 的注解 ,我们在使用 SpringMVC 的注解时需要注意:

1、FeignClient 接口 有参数在参数必须加 @PathVariable("XXX")@RequestParam("XXX")

ariable(“XXX”)@RequestParam(“XXX”)`

2、FeignClient 返回值为复杂对象时其类型必须有无参构造函数。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐