zhihu-spider之Feign——zhihu-spider開源項目使用技術詳解(其六)
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.項目的開源地址