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); }