Spring-Cloud RestTemplate 服务间调用

这是一篇非常简单的笔记, 有用的只是第三种实现方式

RestTemplate 的三种实现方式

第一种方式 这不重要

直接使用 new 一个RestTemplate出来, URL直接写死:

	RestTemplate restTemplate = new RestTemplate();
	String resp = restTemplate.getForObject("http://localhost:8080/msg", String.class);

第二种方式 这也不重要

利用 loadBalancerClient 通过应用名获取 URL 再 new RestTemplate()

	RestTemplate restTemplate = new RestTemplate();
	// choose(param) param -> 在 Eureka 中注册的地址
	ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");
	String url = String.format(
		"http://%s:%s",
		serviceInstance.getHost(),
		serviceInstance.getPost());
	String response = restTemplate.getForObject(url, String.class);

第三种方式 这是最好用的

注册一个 JavaBean

	@Component
	public class RestTemplateConfig {
		
		@Bean
		@LoadBalanced // 此注解可在 RestTemplate 里使用应用名字
		public RestTemplate restTemplate() {
			return new RestTemplate();
		}

	}

Spring-boot MVC Service

	@Autowired
	private RestTemplate restTemplate;

	public String testServer () {
			// 注意 PRODUCT 是 Eureka Server 上注册的服务器名
			String resp = restTemplate.getForObject("http://PRODUCT/msg", String.class);
			log.info("response={}", resp);
			return resp
	}

你可能感兴趣的:(Spring,Cloud,RestTemplate)