1.RestTemplateweb
Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,可以大大提升客户端的编写效率,因此不少客户端好比 Android或者第三方服务商都是使用 RestTemplate 请求 restful 服务。spring
定义一个RestTemplate的Bean,设置成LoadBalancedjson
@Configuration
public class RestTemplateConfiguration { @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } }
调用时注入这个beanrestful
@Autowired private RestTemplate restTemplate; public String getProduct(string productId) { String response=restTemplate.getForObject("http://Product/getProduct/" + productId, String.class); //Product为应用名字 return response; }
2.Feginapp
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") //扫描包
定义接口 spa
@FeignClient(name= "Product") //应用名称 public interface ProductClient { @GetMapping("/getProduct") public String getProduct(String productId); }
在调用的地方 注入rest
@Autowired private ProductClient client; @GetMapping(value = "getProduct") public String getProduct(String productId) { return client.getProduct(productId); }