1.Feign简介
Feign是一个声明式的Web服务客户端这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释。它具有可插入注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持,并使用Spring Web中默认使用的HttpMessageConverters。Spring Cloud集成Ribbon和Eureka以在使用Feign时提供负载均衡的http客户端。
官方地址:http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign
中文官方地址:https://springcloud.cc/spring-cloud-dalston.html#spring-cloud-feign
2.配置Feign
//gradle依赖如下
compile "org.springframework.cloud:spring-cloud-starter-feign:1.2.3.RELEASE"
//maven依赖如下
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
Java Config配置
#FeignConfig.java做如下配置
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import feign.Logger;
import feign.codec.Encoder;
import feign.form.FormEncoder;
/**
*
*
* @author sunzc
*
* 2017年6月10日 上午9:41:08
*/
@Configuration
@EnableFeignClients(basePackages = { "com.wei.you.zhihu.spider.service.client" })
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.BASIC;
}
@Bean
public Encoder encoder() {
return new FormEncoder();
}
}
3.Feign使用
(1).定义Feign的客户端
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* 知乎FeignClient的客户端
*
* @author sunzc
*
* 2017年6月7日 下午8:04:29
*/
@FeignClient(name = "zhihu", url = "https://www.zhihu.com")
public interface ZhihuRecommendationClient {
@RequestMapping(method = RequestMethod.GET, value = "/explore/recommendations", consumes = { "application/json" })
String getRecommendation();
}
(2).使用Feign的客户端
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.wei.you.zhihu.spider.service.IZhihuRecommendationService;
import com.wei.you.zhihu.spider.service.client.ZhihuRecommendationClient;
/**
* 分析知乎Recommendation获取的网页数据
*
* @author sunzc
*
* 2017年6月10日 下午7:17:52
*/
@Component
public class ZhihuRecommendationServiceImpl implements IZhihuRecommendationService {
// 注入知乎FeignClient的客户端
@Autowired
private ZhihuRecommendationClient requestClient;
/**
* 解析页面数据
*/
@Override
public String anaylicsRecommendation() {
return requestClient.getRecommendation();
}
}
4.项目的开源地址