zhihu-spider之Feign——zhihu-spider開源項目使用技術詳解(其六)

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.項目的開源地址

https://github.com/sdc1234/zhihu-spider

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章