服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 使用FeignClient进行微服务交互方式(微服务接口互相调用)

使用FeignClient进行微服务交互方式(微服务接口互相调用)

2022-08-29 14:44古木2019 Java教程

这篇文章主要介绍了使用FeignClient进行微服务交互方式(微服务接口互相调用),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用FeignClient进行微服务交互

先写一个公共方法

?
1
2
3
4
  public String getSettingValue(String name) {
       Map<String, Object> map = (Map) settingClient.getByName(name).getData();
       return (String) map.get("value");
  }

然后写一个Feign调用

?
1
2
3
4
5
@FeignClient(value="qiang-admin")
public interface SettingClient {
    @RequestMapping(value="/setting/getSetting/{name}",method = RequestMethod.GET)
    public ReturnMsg getByName(@PathVariable("name") String name);
}

@FeignClient注解用于指定从哪个服务中调用功能 ,注意 里面的名称与被调用的服务

名保持一致,并且不能包含下划线。

@RequestMapping注解用于对被调用的微服务进行地址映射。注意 @PathVariable注

解一定要指定参数名称,否则出错。

@PathVariable:接口参数

被Feign调用的方法如下

?
1
2
3
4
5
6
7
8
9
10
    @RequestMapping(value="/getSetting/{name}",method = RequestMethod.GET)
    public ReturnMsg getByName(@PathVariable String name){
        Setting condition = new Setting();
        condition.setName(name);
        ReturnMsg returnMsg = new ReturnMsg<>();
        Setting setting = settingService.findByCondition(condition);
        returnMsg.setCode(ReturnIntCode.SUCCESSS_CODE);
        returnMsg.setData(setting);
        return returnMsg;
    }

@FeignClient调用微服务注意事项

在初次使用springcloud,调用微服务的时候,常常会踩坑,这里总结一下,在调用微服务的时候,常犯的几点错误及注意点:

FeignClient接口不能使用@GettingMapping之类的组合注解

?
1
2
3
4
5
6
@FeignClient("target-servername")
  public interface FeignClient {
       @RequestMapping(value = "/simple/{id}", method =RequestMethod.GET)
 public Object findById(@PathVariable("id") Long id);
 ...
}

这边的@RequestMapping(value = "/simple/{id}", method = RequestMethod.GET) 不能写成@GetMapping("/simple/{id}") 。因为GetMapper是一个组合注解。

FeignClient接口中如果使用到@PathVariable

必须指定其value

?
1
2
3
4
5
6
@FeignClient("target-servername")
public interface FeignClient {
 @RequestMapping(value = "/simple/{id}", method = RequestMethod.GET)
 public Object findById(@PathVariable("id") Long id);
 ...
}

这边的@PathVariable("id") 中的”id”,不能省略,必须指定。

FeignClient多参数的构造

如果想要请求target-servername 服务,并且参数有多个例如:http://target-servername/query-by?id=1&username=张三 要怎么办呢? 不能构造一个复杂的对象去接收,必须一个一个接收参数

?
1
2
3
4
5
@FeignClient("target-servername")
public interface UserFeignClient {
 @RequestMapping(value = "/query-by", method = RequestMethod.GET)
 public Object queryBy(@RequestParam("id")Long id, @RequestParam("username")String username);
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_38188762/article/details/103163516

延伸 · 阅读

精彩推荐
  • Java教程详解idea maven项目如何使用lib下得jar包

    详解idea maven项目如何使用lib下得jar包

    这篇文章主要介绍了详解idea maven项目如何使用lib下得jar包,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    StartGala8562021-02-26
  • Java教程零基础如何快速学习Java编程?

    零基础如何快速学习Java编程?

    零基础如何快速学习Java编程?入行Java开发要有一定的逻辑思维能力,而逻辑思维能力不是天生的但可以通过锻炼得到提升。学习一门IT技术,想要学好最主...

    博学谷4542021-03-23
  • Java教程Java集合框架超详细小结

    Java集合框架超详细小结

    Java中提供的一种容器,可以用来存储多个数据。java集合大致可以分为Set,List,Queue和Map四种体系。这篇文章主要介绍了Java集合框架超详细小结,需要的朋友...

    时间最考验人5352021-11-29
  • Java教程Java发送带html标签内容的邮件实例代码

    Java发送带html标签内容的邮件实例代码

    下面小编就为大家带来一篇Java发送带html标签内容的邮件实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    服务器之家6422020-07-04
  • Java教程手把手带你了解Java-Stream流方法学习及总结

    手把手带你了解Java-Stream流方法学习及总结

    这篇文章主要介绍了通过实例了解JavaStream流的方法学习和总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    Java架构-大仙3872021-11-25
  • Java教程给冰冰看的SpringAOP面试题

    给冰冰看的SpringAOP面试题

    Spring之前已经跟学弟具体聊很详细的IOC已经循环依赖问题,接下来要接着为跟学妹们聊另外的一个模块了,那就是AOP,这也是面试官比较喜欢问的一个模块...

    三太子敖丙9412021-09-09
  • Java教程Java语言Lang包下常用的工具类介绍

    Java语言Lang包下常用的工具类介绍

    这篇文章主要介绍了Java语言Lang包下常用的工具类介绍,次奥变觉得挺不错的,这里分享给大家,需要的朋友可以参考下。...

    乘北之风10532021-01-16
  • Java教程Spring通过Java配置集成Tomcat的方法

    Spring通过Java配置集成Tomcat的方法

    这篇文章主要介绍了Spring通过Java配置集成Tomcat的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    面试官认为我什么都会10212021-09-06