什么是OpenFeign?
OpenFeign:OpenFeign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。他的使用方法是定义一个服务接口然后在接口上添加注解。SpringCloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eurka和Ribbon组合使用以支持负载均衡。
搭建步骤
1.在pom文件中加入jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.添加OpenFeign的配置
feign:
hystrix:
enabled: true #在Feign中开启Hystrix
compression:
request:
enabled: false #是否对请求进行GZIP压缩
mime-types: text/xml,application/xml,application/json #指定压缩的请求数据类型
min-request-size: 2048 #超过该大小的请求会被压缩
response:
enabled: false #是否对响应进行GZIP压缩
logging:
level: #修改日志级别
com.pers.springcloud.service.PaymentFeginServic: debug
3.创建一个配置类,设置OpenFeign的日志级别
@Configuration
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}
4.在主启动类添加注解
@SpringBootApplication
@EnableFeignClients
public class OrderFeignMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderFeignMain80.class,args);
}
}
5.创建一个接口类
@Component
//value:在Eureka注册中心的服务名称
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {
//将CLOUD-PAYMENT-SERVICE的api方法拷贝过来,定义一个接口
@GetMapping(value = "/payment/get/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
public JSONResult getPayment(@PathVariable(value = "id") Long id);
}
6.如何调用?在controller中将定义的接口进行注入,然后通过接口进行调用
@RestController
@RequestMapping("/consumer")
public class OrderFeignController {
@Autowired
private PaymentFeignService paymentFeignService;
@GetMapping(value = "/payment/get/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
public JSONResult<Payment> getPaymentById(@PathVariable(value = "id") Long id) {
return paymentFeignService.getPayment(id);
}
}
7.OpenFeign搭建完成