title: SpringCloud学习笔记四:Feign
date: 2020-04-30 16:16:02
tags:

  • SpringCloud
  • Feign
    categories: SpringCloud
    toc_number: true

Feigin主要集中在消费者,因此配置主要针对消费者项目

添加依赖

在消费者中添加Feign的依赖:

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-feign</artifactId>
  4. <version>1.4.7.RELEASE</version>
  5. </dependency>

添加注解

在启动类添加@EnableFeignClients,然后配置RestTemplate以备远程调用。

  1. @EnableEurekaClient
  2. @EnableFeignClients
  3. @SpringBootApplication
  4. public class EurekaConsumerApplication0 {
  5. // 按照网上教程,此处的resttemplate可以移除,但我尝试后失败了
  6. @LoadBalanced // 负载均衡
  7. @Bean(value = "restTemplate")
  8. public RestTemplate restTemplate() {
  9. return new RestTemplate();
  10. }
  11. public static void main(String[] args) {
  12. SpringApplication.run(EurekaConsumerApplication0.class, args);
  13. }
  14. }

添加接口对接远程端

  1. @FeignClient("micro-producer") // 生产者的application.name属性
  2. public interface ClientIndexService {
  3. @GetMapping(value = "/api/index/getMsg") // 生产者接口相对路径
  4. public String getMsg();
  5. }

消费者定义的接口应当与生产者的接口名称、URL、参数列表、返回值类型、请求方式相同。

远程调用

在消费者的Controller调用远程接口

  1. @RestController
  2. @RequestMapping(value = "/api/consumer")
  3. public class IndexController {
  4. @Autowired
  5. private ClientIndexService remoteService;
  6. @GetMapping(value = "/getRemoteMsg")
  7. public String remoteIndexController() {
  8. return remoteService.getMsg();
  9. }
  10. }

负载均衡

Feign内置了Ribbon因此负载均衡使用方式与ribbon相同且默认算法都为轮询。