详解spring cloud feign踩坑记录
1:多客户端时,feign接口抽取到公共jar中,此时,客户端的启动类上需要对该jar中feign所在的包进行扫描,要在spring和feign中同时注册,否则启动时会报:“Consider defining a bean of type '******Feign' in your configuration.”
@SpringBootApplication @EnableTransactionManagement @EnableDiscoveryClient @ComponentScan(basePackages={"com.lcamtech.aidis.feign","com.lcamtech.aiads.dts"}) @EnableFeignClients(basePackages = {"com.lcamtech.aidis.feign"}) @EnableCaching @MapperScan(basePackages = "com.lcamtech.aiads.dts.mapper") public class Application extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
重点:
@ComponentScan(basePackages={"com.lcamtech.aidis.feign","com.lcamtech.aiads.dts"}) @EnableFeignClients(basePackages = {"com.lcamtech.aidis.feign"})
aidis包为包含feign的jar, 此时@ComponentScan还需要同时扫描本项目的包。
2:使用Fegin传值时,GET变POST
@FeignClient(value = "SERVICE-NAME") public interface UserAccountFeign { @RequestMapping(value = "/ac/exist", method = RequestMethod.GET) public BaseResult isExist(@RequestParam("mobile") String mobile); }
feign在传递时默认会将数据放在RequestBody中,所以会导致默认使用POST请求(及时@RequestMapping写着GET也没用),此时需要在参数列表中声明@RequestParam才能进行正常的GET请求。
3:feign请求返回复杂对象时
如:
public class Result{ private string code; private string message; private Object data; //get/set }
问题描述:当请求返回的是Result的一个对象时,对于该对象内部的data值,会变成一个linkedHashMap,并不会被转换成相应的类对象,若直接强转会报类型错误。
解决方法1:简单转换
/** * @Description: 将数据转换到相应的容器 * @param bean * @param clazz * @return * @throws * @author SunF * @date 2018/6/20 10:28 */ public static <T> T convertValue(Object bean, Class<T> clazz){ try{ ObjectMapper mapper = new ObjectMapper(); return mapper.convertValue(bean, clazz); }catch(Exception e){ log.error("错误的转换:BeanUtil.convertValue() --->" + e.getMessage()); return null; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
解析整合mybatis-spring需要的maven依赖配置问题
这篇文章主要介绍了整合mybatis-spring需要的maven依赖配置问题,创建Maven项目,导入相关jar包,文中还给大家提到了,解决maven静态资源约定大于习惯问题,本文给大家介绍的非常详细,需要的朋友参考下吧2021-11-11JavaSE的三大接口:Comparator,Comparable和Cloneable详解
这篇文章主要介绍了详解JavaSE中Comparator,Comparable和Cloneable接口的区别的相关资料,希望通过本文大家能彻底掌握这部分内容,需要的朋友可以参考下2021-10-10通过springboot+mybatis+druid配置动态数据源
这篇文章主要介绍了通过springboot+mybatis+druid配置动态数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下2019-06-06springcloud 熔断监控Hystrix Dashboard和Turbine
这篇文章主要介绍了springcloud 熔断监控Hystrix Dashboard和Turbine,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-08-08java中ArrayList和LinkedList的区别详解
这篇文章主要介绍了java中ArrayList和LinkedList的区别详解,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下2021-01-01
最新评论