欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2022-07-14 08:19:38|栏目:JAVA代码|点击:

使用FeignClient进行微服务交互

先写一个公共方法

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

然后写一个Feign调用

@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调用的方法如下

    @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之类的组合注解

@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

@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=张三 要怎么办呢? 不能构造一个复杂的对象去接收,必须一个一个接收参数

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

上一篇:java中基本数据类型与Object的关系说明

栏    目:JAVA代码

下一篇:没有了

本文标题:使用FeignClient进行微服务交互方式(微服务接口互相调用)

本文地址:http://www.codeinn.net/misctech/207813.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有