最近在用SpringCloud来写毕设,用到了Feign,感觉体验还不错,今天来做一个简略的介绍。
Feign是Netflix开发的声明式、模板化的HTTP客户端,我们可以直接使用注解+接口的形式进行Http调用,在SpringCloud中进行了增强,可以直接使用SpringMVC的注解进行调用。
使用方法。
- 添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
- 在应用入口处开启
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);
}
}
- 配置
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;
}
}
- 声明接口
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简单了很多?