openFeign常用注解及快速入门

Feign可以把Rest请求进行封装,将远程调用的请求封装成本地请求的方式,不需要再手动拼接url和路径

1请求路径

2请求参数

3请求方式

4返回结果

我们使用注解的方式将此四项参数提供给Feign,Feign即可帮我们自动完成一次远程请求

注解:

主类上方加入:

@EnableFeignClients

新建一个接口,并使用注解方式提供4项参数:

@FeignClient("user-service")//提供请求地址
public interface UserClient {

@GetMapping("user/{id}")//提供请求路径及参数
String queryById(@PathVariable("id") Long id);//提供请求方式及返回结果
}

服务调用代码的改变:

原来的代码:

@RestController
@RequestMapping("consumer")
@DefaultProperties(defaultFallback = "fallBack")
public class UserController {

@Autowired
private RestTemplate restTemplate;

@GetMapping("{id}")
@HystrixCommand
public String queryById(@PathVariable("id") Long id){
String url = "http://user-server/user/"+id;
String user = restTemplate.getForObject(url, String.class);
return user;
}

public String fallBack(Long id){
return "服务太拥挤了,请稍后再试!";
}
}

改为:

 
@RestController
@RequestMapping("consumer")
@DefaultProperties(defaultFallback = "fallBack")
public class UserController {

@Autowired
private UserClient userClient; //注意这里不再有RestTemplate了

@GetMapping("{id}")
@HystrixCommand
public String queryById(@PathVariable("id") Long id){
return String user = userClient.queryById(id); //此处看起来就是本地的调用了一个方法
}

public String fallBack(Long id){
return "服务太拥挤了,请稍后再试!";
}
}

主类:

@SpringCloudApplication
public class ConsumerApplication {

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}

public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}

}

改为:

@EnableFeignClients
@SpringCloudApplication
public class ConsumerApplication {

public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}

}

除此之外Feign还支持请求压缩日志级别,此处不详述

注意:OpenFeign自带了ribbon和hystrix但是不推荐使用,因为OpenFeign自带的ribbon,hystrix并不通过springboot管理,因此无法使用springboot提供的默认配置,需要额外手工配置

如有需要请度娘:“Feign的hystrix和ribbon配置”,注意配置的是Feign中的hystrix和ribbon,不是spring中的hystrix和ribbon!!!

猜你喜欢

转载自www.cnblogs.com/WaterGe/p/11687118.html