Spring-Cloud RestTemplate 服务间调用

本文介绍了RestTemplate的三种调用方式,包括直接实例化、通过负载均衡选择服务实例及配置注解实现服务名调用。重点介绍了第三种方式,即通过Spring Boot组件配置带有@LoadBalanced注解的RestTemplate,实现对注册在Eureka Server上的服务按名称进行调用。

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

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
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值