gpt4 book ai didi

详解spring cloud feign踩坑记录

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解spring cloud feign踩坑记录由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1:多客户端时,feign接口抽取到公共jar中,此时,客户端的启动类上需要对该jar中feign所在的包进行扫描,要在spring和feign中同时注册,否则启动时会报:“consider defining a bean of type '******feign' in your configuration.” 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@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);
   }
 
}

重点:

?
1
2
@componentscan (basepackages={ "com.lcamtech.aidis.feign" , "com.lcamtech.aiads.dts" })
@enablefeignclients (basepackages = { "com.lcamtech.aidis.feign" })

aidis包为包含feign的jar, 此时@componentscan还需要同时扫描本项目的包.

2:使用fegin传值时,get变post 。

?
1
2
3
4
5
6
7
@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请求返回复杂对象时 。

如:

?
1
2
3
4
5
6
7
public class result{
  private string code;
  private string message;
  private object data;
 
  //get/set
}

问题描述:当请求返回的是result的一个对象时,对于该对象内部的data值,会变成一个linkedhashmap,并不会被转换成相应的类对象,若直接强转会报类型错误.

解决方法1:简单转换 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
    * @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 ;
     }
   }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://my.oschina.net/dlam/blog/1833356 。

最后此篇关于详解spring cloud feign踩坑记录的文章就讲到这里了,如果你想了解更多关于详解spring cloud feign踩坑记录的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com