怎么在SpringCloud中使用Feign调用服务

发布时间:2021-05-27 17:53:40 作者:Leah
来源:亿速云 阅读:273

本篇文章给大家分享的是有关怎么在SpringCloud中使用Feign调用服务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

使用Spring Cloud Feign

创建一个SpringBoot工程,作为服务调用方

1.pom.xml

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

 <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-feign</artifactId>
 </dependency>

 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>

spring-cloud-starter-feign加入了feign的依赖

2.启动类

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class FeignConsumerApplication {

 public static void main(String[] args) {
  SpringApplication.run(FeignConsumerApplication.class, args);
 }
}

@EnableFeignClients:开启Spring Cloud Feign的支持功能

3.服务层

@FeignClient("hello-service")
 public interface HelloService {

 @RequestMapping(value = "/hello", method = RequestMethod.GET)
 String hello();
}

@FeignClient(“hello-service”):制定服务名来绑定服务

注:服务名不区分大小写

@RequestMapping:指定调用服务中的具体方法

4.Controller层

@Controller
public class ConsumerController {

 @Autowired
 private HelloService helloService;

 @RequestMapping(value = "/feign-consumer", method = RequestMethod.GET)
 @ResponseBody
 public String helloConsumer() {
  return helloService.hello();
 }
}

在方法中调用这个绑定了hello-service服务接口的客户端向该服务发起/hello接口的调用

5.配置类

server.port=9001

spring.application.name=feign-consumer
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

启动程序以后,在浏览器中输入http://localhost:9001/feign-consumer出现下图:

怎么在SpringCloud中使用Feign调用服务

- 提升使用,带参数的请求
在具体业务中的接口会比之前程序的复杂得多,这里介绍一下Feign对集中不同形式参数的绑定方法。有@RequestParam、@RequestHeader、@RequestBody

1.改造服务提供类的Service层,添加几个方法

@RequestMapping(value = "/hello1", method = RequestMethod.GET)
@ResponseBody
public String hello(@RequestParam String name) {
 return "hello " + name;
}

@RequestMapping(value = "/hello2", method = RequestMethod.GET)
@ResponseBody
public User hello(@RequestHeader String name, @RequestHeader Integer age) {
 return new User(name, age);
}

@RequestMapping(value = "/hello3", method = RequestMethod.POST)
@ResponseBody
public String hello(@RequestBody User user) {
 return "Hello " + user.getName() + ", " + user.getAge();
}

2.添加一个javabean

public class User {
 private String name;
 private Integer age;

 public User() {
 }

 public User(String name, Integer age) {
  this.name = name;
  this.age = age;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Integer getAge() {
  return age;
 }

 public void setAge(Integer age) {
  this.age = age;
 }

 @Override
 public String toString() {
  return "User{" +
    "name='" + name + '\'' +
    ", age=" + age +
    '}';
 }
}

3.修改服务调用类的接口

@RequestMapping(value = "/hello1", method = RequestMethod.GET)
String hello(@RequestParam("name") String name);

@RequestMapping(value = "/hello2", method = RequestMethod.GET)
User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age);

@RequestMapping(value = "/hello3", method = RequestMethod.POST)
String hello(@RequestBody User user);

这里在定义各参数绑定时@RequestParam、@RequestHeader等可以指定参数名称的注解,但它们的value不能少,否则会报错,这和SpringMVC中有一点不同

4.在服务调用类Controller层添加一个测试的接口

 @RequestMapping(value = "/feign-consumer2", method = RequestMethod.GET)
 @ResponseBody
 public String helloConsumer2() {
  String s2 = helloService.hello("dayday");
  return s2;
 }

启动以后访问浏览器:

怎么在SpringCloud中使用Feign调用服务

以上就是怎么在SpringCloud中使用Feign调用服务,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. SpringCloud如何请求Feign服务调用
  2. 如何使用SpringCloud Feign 调用服务

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springcloud feign

上一篇:使用Feign怎么实现微服务间文件传输

下一篇:使用Feign扩展包怎么实现微服务间文件上传

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》