Feign是什么?
Feign 是一种声明式、模板化的 HTTP 客户端。在 Spring Cloud 中使用 Feign,可以做到使用 HTTP 请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问 HTTP 请求。接下来介绍一下 Feign 的特性,具体如下:
- 可插拔的注解支持,包括 Feign 注解和AX-RS注解。
- 支持可插拔的 HTTP 编码器和解码器。
- 支持 Hystrix 和它的 Fallback。
- 支持 Ribbon 的负载均衡。
- 支持 HTTP 请求和响应的压缩。Feign 是一个声明式的 WebService 客户端,它的目的就是让 Web Service 调用更加简单。它整合了 Ribbon 和 Hystrix,从而不需要开发者针对 Feign 对其进行整合。Feign 还提供了 HTTP 请求的模板,通过编写简单的接口和注解,就可以定义好 HTTP 请求的参数、格式、地址等信息。Feign 会完全代理 HTTP 的请求,在使用过程中我们只需要依赖注入 Bean,然后调用对应的方法传递参数即可。
简单来说只需要你创建一个接口,然后在上面添加注解即可.
引入依赖
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class ProductApplication {
public static void main(String[] args) {
SpringApplication.run(ProductApplication.class, args);
}
}
1、加入依赖包
<!-- feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
2、配置
server.port=10980
server.servlet.context-path=/couponcore
spring.application.name=couponcore
app.id=couponcore
appllo.bootstrap.enabled=true
appllo.bootstrap.namespace=application
#appllo
apollo.meta=http://discovery1:8080,http://discovery2:8080,http://discovery3:8080
#eureka
eureka.client.serviceUrl.defaultZone=http://discovery1:8761/eureka,http://discovery2:8761/eureka,http://discovery3:8761/eureka
eureka.instance.instanceId=${spring.cloud.client.ip-address}:${spring.application.name}:${spring.application.instance_id:${server.port}}
#使用真实ip
instance.preferIpAddress=true
3、Feign的使用
@FeignClient(value = "CART")
public interface CartFeignClient {
@PostMapping("/cart/{productId}")
Long addCart(@PathVariable("productId")Long productId);
}