RestTemplate+Ribbon实现服务调用
一,通过LoadBalancerClient取得uri,然后RestTemplate 调用
1, 注入LoadBalancerClient
@Autowired
LoadBalancerClient client;
2,调用client的choose方法,参数传要调用的服务名
ServiceInstance instance = client.choose("product"); RestTemplate restTemplate = new RestTemplate(); String forObject = restTemplate.getForObject(instance.getUri() + "/product/find/1", String.class);
二,用@LoadBalanced注解修饰RestTemplate,直接通过RestTemplate访问微服务
1,新建一个配置类,向工厂注入RestTemplate 对象
@LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); }
2,controller直接调用RestTemplate 访问微服务
@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET) public String echo(@PathVariable String str) { return restTemplate.getForObject("http://servicename/echo/" + str, String.class); }