springboot的RestTemplate调用rest接口
1.RestTemplate的三种使用方式
2.RestTemplate的加载问题
1.RestTemplate的三种使用方式
ServerController
@RestController
public class ServerController {
@GetMapping("/msg")
public String msg(){
return "this is product msg";
}
}
ClientController
@RestController
@Slf4j
public class ClientController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@Autowired
private RestTemplate restTemplate;
@GetMapping("/getProductMsg")
public String msg(){
//1.第一种方式(直接使用restTemplate,url写死)
// RestTemplate restTemplate = new RestTemplate();
// String response = restTemplate.getForObject("http://localhost:8888/msg", String.class);
//2.弟二种方式(利用loadBalancerClient通过应用名获取url,然后再使用直接使用restTemplate)
// ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");
// String url = String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort())+"/msg";
// RestTemplate restTemplate = new RestTemplate();
// String response = restTemplate.getForObject(url, String.class);
//
//3.弟二种方式(利用@LoadBalanced,可在restTemplate里使用应用名字)
String response = restTemplate.getForObject("http://PRODUCT/msg", String.class);
log.info("response={}",response);
return response;
}
}
第三种方式需要先定义一个bean
//这里就是创建一个负载均衡的RestTemplate Bean
@LoadBalanced
@Bean
public RestTemplate