当前位置: 首页 > 工具软件 > zhihu-spider > 使用案例 >

zhihu-spider之Feign——zhihu-spider开源项目使用技术详解(其六)

冯玮
2023-12-01

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

 类似资料: