spring cloud使用RestTemplate实现服务间调用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lovelovelovelovelo/article/details/86748732

方法 1:
写死url

RestTemplate restTemplate = new RestTemplate();
ResponseType response = restTemplate.getForObject(url,ResponseType);

缺点:
url要写死,在不确定url或者多个url的情况下有问题

方法2:
使用LoadBalancerClient根据服务id获取url

@Autowired
LoadBalancerClient  loadBalanceClient;

ServiceInstance serviceInstance = loadBalanceClient.choose(serviceId);
String url = String.format("http:%s:%s",serviceInstance.getHost(),serviceInstance.getPort());
ResponseType response = restTemplate.getForObject(url,ResponseType);

方法3(推荐使用):
将RestTemplate作为Bean引入

@Component
public class RestTemplateConfig{
	@Bean
	@LoadBalanced
	public RestTemplate restTemplate(){
		return new RestTemplate();
	}
}


@Autowired
RestTemplate restTemplate;

ResponseType response =  restTemplate.getForObject("http://serviceId",ResponseType);

猜你喜欢

转载自blog.csdn.net/lovelovelovelovelo/article/details/86748732