SpringCloud - RestTemplate 的三种使用方式
1. 直接使用
RestTemplate restTemplate = new RestTemplate(); String result = restTemplate.getForObject("http://localhost:8761/order", String.class);
2.使用 LoadBalancerClient 获取服务地址
@Autowired LoadBalancerClient loadBalancerClient; @GetMapping public String getOrder() { RestTemplate template = new RestTemplate(); ServiceInstance instance = loadBalancerClient.choose("ORDER"); String url = instance.getHost(); int port = instance.getPort(); String result = template.getForObject(url + ":" + port + "/order", String.class); return result; }
3. 使用 @LoadBalanced 注解
1.RestTemplate 注解为bean, 并加上 @LoadBalanced
@Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); }
2. 注入 @Autowired RestTemplate template;
3. 使用 @GetMapping public String getOrder() { String result = template.getForObject("http://ORDER/order", String.class); return result; }
ORDER 为注册的服务名