服务间的通信 RestTemplate和Feign

服务间的通信 RestTemplate和Feign
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

1.RestTemplate

   Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 Android或者第三方服务商都是使用 RestTemplate 请求 restful 服务。

  定义一个RestTemplate的Bean,设置成LoadBalanced

  

复制代码

@Configuration
public class RestTemplateConfiguration {

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

复制代码

调用时注入这个bean

复制代码

@Autowired
private RestTemplate restTemplate;

public String getProduct(string productId) {
    String response=restTemplate.getForObject("http://Product/getProduct/" + productId, String.class); //Product为应用名字

    return response;

}

复制代码

2.Fegin

  

Feign是一种负载均衡的HTTP客户端, 使用Feign调用API就像调用本地方法一样,从避免了 调用目标微服务时,需要不断的解析/封装json 数据的繁琐。
Fegin是一个声明似的web服务客户端,它使得编写web服务客户端变得更加容易。使用Fegin创建一个接口并对它进行注解。它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign。
 

引入依赖 

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

 启动类上添加注解  @EnableFeignClients

@EnableFeignClients(basePackages = "cn.qin.client") //扫描包

定义接口 

 

复制代码

@FeignClient(name= "Product")  //应用名称
public interface ProductClient {

    @GetMapping("/getProduct")
    public String getProduct(String productId);

}

复制代码

在调用的地方 注入

复制代码

 @Autowired
   private ProductClient client;

 @GetMapping(value = "getProduct")
  public String getProduct(String productId) {
        return client.getProduct(productId);
  }

复制代码

本文来源huayang183,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/18394

发表评论