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
注解,
4.总结
Feign 工作原理如下:
1、 启动类添加 @EnableFeignClients
注解,Spring
会扫描标记了@FeignClient
注解的接口,并生成此接口的代理对象
2、 @FeignClient(value = XcServiceList.XC_SERVICE_MANAGE_CMS)
即指定了 cms
的服务名称,Feign
会从注册中心获取 cms
服务列表,并通过负载均衡算法进行服务调用。
3、在接口方法 中使用注解 @GetMapping("/cms/page/get/{id}")
,指定调用的url
,Feign
将根据 url
进行远程调用。
使用 Feign 有哪些需要注意的地方?
SpringCloud 对 Feign
进行了增强兼容了 SpringMVC
的注解 ,我们在使用 SpringMVC
的注解时需要注意:
1、FeignClient 接口 有参数在参数必须加 @PathVariable("XXX")
和 @RequestParam("XXX")
ariable(“XXX”)和
@RequestParam(“XXX”)`
2、FeignClient 返回值为复杂对象时其类型必须有无参构造函数。