【spring cloud】feign组件的使用

feign组件在spring cloud体系中主要负责方法的远程调用,有了它,调用其他应用的接口,不需要使用RestTemplate那么麻烦,在简单的配置后,可以直接将接口Autowired进来,直接调就好,很简单。这里主要讲下怎么简单的配置下feign。

  1. 引入依赖
    部分依赖如下所示:
    feign的依赖,
        <!--feign-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

被调用方提供的接口层依赖,

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>feign-client-intf</artifactId>
            <version>${project.version}</version>
        </dependency>
  1. 启动类加入注解
    为启动类加上@EnableFeignClients,
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignConsumerApp {

    public static void main(String[] args) {
        new SpringApplicationBuilder(FeignConsumerApp.class)
                .web(WebApplicationType.SERVLET)
                .run(args);
    }
}
  1. 继承被调用方接口,指定调用的服务,实现feign客户端
    注意,这里的服务名,应是eureka上注册的名称
@FeignClient(name = "feign-client")
public interface MyService extends IService{
}
  1. 也可以加入自己需要的配置
    如超时等配置,
    部分配置如下所示,
spring:
  main:
    allow-bean-definition-overriding: true
  application:
    name: feign-consumer-advanced

server:
  port: 40001

eureka:
  client:
    serviceUrl:
      #注册中心地址
      defaultZone: http://localhost:20000/eureka/

feign-client:
  ribbon:
    #每台机器最大的重试次数
    MaxAutoRetries: 0
    #可以再重试几台机器
    MaxAutoRetriesNextServer: 1
    #连接超时时间(ms)
    ConnectTimeout: 1000
    #业务处理超时(ms)
    ReadTimeout: 2000
    #在所有类型的HTTP Method进行重试
    #默认为false,仅在不改动数据(查)的情况下进行重试
    #为true时,要特别注意幂等问题
    OkToRetryOnAllOperations: true
  1. 将接口注入,实现远程调用
    @Autowired
    private MyService myService;
上一篇:Java学习记录 05Spring Cloud Feign


下一篇:open-feign拦截器