Http调用利器-Feign

96
Stalary
0.2 2019.01.26 17:16 字数 160

最近在用SpringCloud来写毕设,用到了Feign,感觉体验还不错,今天来做一个简略的介绍。

Feign是Netflix开发的声明式、模板化的HTTP客户端,我们可以直接使用注解+接口的形式进行Http调用,在SpringCloud中进行了增强,可以直接使用SpringMVC的注解进行调用。

使用方法。

  1. 添加依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>
  1. 在应用入口处开启
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableFeignClients
public class MessageApplication {

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

}
  1. 配置
import feign.Logger;
import feign.Request;
import feign.Retryer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * FeignConfig
 *
 * @author lirongqian
 * @since 2018/10/17
 */
@Configuration
public class FeignConfig {

    @Bean
    public Request.Options options() {
        // 连接超时配置为10s,读取超时为5s
        return new Request.Options(10000, 5000);
    }

    @Bean
    public Retryer feignRetryer() {
        // 重试3次
        return new Retryer.Default(100, 1000, 3);
    }

    @Bean
    public Logger.Level feignLoggerLevel() {
        // 全量日志打印
        return Logger.Level.FULL;
    }
}
  1. 声明接口
import com.stalary.pf.outside.data.ResponseMessage;
import com.stalary.pf.outside.data.UploadAvatar;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @author Stalary
 * @description
 * @date 2019/1/1
 */
// 直接使用url进行调用时需要配置url
@FeignClient(name = "user", url = "http://120.24.5.178:8080")
@Component
public interface UserClient {

    @PostMapping("/user/avatar")
    ResponseMessage uploadAvatar(@RequestBody UploadAvatar uploadAvatar);
}

经过上面四个步骤,我们就可以开始使用Feign来进行Http调用了,是不是比HttpClient简单了很多?

技术文章
Web note ad 1