社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
序
首先想先说1w个CNM,坑的自己外焦里嫩。但是功夫不负有心人,终于微服务的基础框架达成了。
一、搭建思路
之前一直用springBoot,上手springCloud还是很快的。实际也就是把springBoot拆成多个项目,然后其他项目通过model或jar引入的方式。我这里的思路:
clouddata:常量、统一出参对象、dto、vo
eureka:服务注册中心
commonservice:通用服务(有其他服务实际就是复制这个项目,改改)
web:测试调用(也可以作为统一接口层)
二、搭建过程
这里我就不细说了,有人写的很详细的了,我这里是参考博友的:
https://blog.csdn.net/qq_37511501/article/details/94402282
网上说服务提供方也是调用方,所以服务提供方有的也引入了openFeign的支持。我这里是暂时没有这样处理,主要还是怕自己糊了,所以先规矩搭建。
三、遇到的坑
我这里通用服务单独跑是正常的,依然是可以使用url请求的。web调用也正常,能进通用服务的实现类。唯一的问题就是web里用统一出参对象接收不了,一直报json转换器的问题。
于是:
1、各种加Configuration,使劲折腾了半天configureMessageConverters,都失败,报错依然
2、怀疑不能使用Result<?>接收,改成指定对象,依然失败
3、怀疑序列化,修改result统一出参对象实现序列化
最后,使用翻译插件,对报错上面的一段话翻译(警告WARN)
警告说我的统一出参对象的code转换失败,于是再细看统一出参,一行行过(这里其实已经说明了setCode方法),终于发现里面setCode方法有2个,有一个是传枚举ResultCode对象设置code。你不是说基础对象jackson转换失败吗,好,我就去掉这个枚举对象setCode方法,修改业务调用都只能传int。重新编译,启动服务注册、启动服务、启动调用测试。postman调用测试,终于熟悉的返回出现了。
我这个问题看似报的Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is feign.codec.DecodeException: Could not extract response: no suitable HttpMessageConverter found for response type
实际上不是转换器的问题,就是统一出参里使用了枚举对象的问题。转换爆出来的仅仅是警告被我忽略了,以后要注意,不要轻易放过任何一个细节。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!