spring cloud fegin踩坑记录
1:多客户端时,fegin接口抽取到公共jar中,此时,客户端的启动类上需要对该jar中fegin所在的包进行扫描,要在spring和fegin中同时注册,否则启动时会报:“Consider defining a bean of type ‘******Feign’ in your configuration.”
@SpringBootApplication @EnableTransactionManagement @EnableDiscoveryClient @ComponentScan(basePackages={"com.lcamtech.aidis.fegin","com.lcamtech.aiads.dts"}) @EnableFeignClients(basePackages = {"com.lcamtech.aidis.fegin"}) @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.fegin","com.lcamtech.aiads.dts"}) @EnableFeignClients(basePackages = {"com.lcamtech.aidis.fegin"})
aidis包为包含fegin的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); }
fegin在传递时默认会将数据放在RequestBody中,所以会导致默认使用POST请求(及时@RequestMapping写着GET也没用),此时需要在参数列表中声明@RequestParam才能进行正常的GET请求。
3:fegin请求返回复杂对象时
如:
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; } }
2:
原文地址:https://my.oschina.net/dlam/blog/1833356
相关推荐
-
浅谈SpringMVC执行过程 Java框架
2019-3-10
-
颠覆微服务认知:深入思考微服务的七个主流观点 Java框架
2020-6-1
-
SpringBoot使用velocity模板引擎 Java框架
2020-6-8
-
springmvc开门篇之源码解读ContextLoaderListener Java框架
2020-6-1
-
Spring Boot 2.0 WebFlux 上手系列课程:快速入门(一) Java框架
2020-6-1
-
Spring拓展接口之FactoryBean,我们来看看其源码实现 Java框架
2019-3-27
-
Spring MVC + Velocity实现国际化配置 Java框架
2019-7-28
-
Elasticsearch Index模块 Java框架
2019-5-4
-
关于Spring Cloud 框架热部署的方法 Java框架
2020-6-1
-
【杂谈】SpringBoot为啥不用配置启动类 Java框架
2020-6-11