SpringCloud之OpenFeign组件(要先做服务注册哦)
1. OpenFeign简介
OpenFeign是一个声明式的伪http客户端,他集成了ribbon组件能够实现负载均衡,并且支持spring mvc注解。
2. 如何使用它?
使用它是通过接口的方式,一个服务调用关系就要写一个接口,接口中定义要调用的方法。
a.引入OpenFeign依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
b.调用方入口类加上@EnableFeignClients
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class,args);
}
}
c.写接口
@FeignClient("ORDER") //必须加上此注解,ORDER为要调用的服务
public interface User_Order {
@GetMapping("order") //这是要调用的方法映射路径
String test();
}
@GetMapping(“order”),此处需要和被调用服务的方法路径一致
接口中的方法名可与被调用的服务方法不一样(最好两个都保持一致!)
d.在服务中调用接口
@RestController
public class UserController {
@Autowired
private User_Order user_order; //将接口注入(爆红不管)
@GetMapping("user")
public String test(){
return user_order.test(); //调用
}
}
如何传参?
a.QueryString方式传参(使用@RequestParam)
public void test(@RequestParam("name") String name){}
b.路径传参(使用@PathVariable)
@GetMapping("order/{name}")
public void test(@PathVariable("name") String name){}
c.传递对象(使用@RequestBody注解)
d.传递数组、列表
传递数组和列表都用的是QueryString传参方式,数组的接收就用数组,但是列表的接收需要将列表作为类属性,用类对象去接收。(可以建立VO类)
OpenFeign超时设置
feign.client.config.ORDER.connect-timeout= //设置指定服务连接超时,默认1s
feign.client.config.ORDER.read-timeout= //设置指定服务等待超时,默认1s
feign.client.config.default.connect-timeout= //设置所有服务连接超时
feign.client.config.default.read-timeout= //设置所有服务等待超时
OpenFeign日志
//开启openfeign的日志(OpenFeign日志是debug级别的)
logging.level.xp.feignClient=debug
//配置某个服务的日志展示级别
feign.client.config.ORDER.logger-level=full