RestTemplate对象与LoadBalanced注解
Posted 旺仔哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RestTemplate对象与LoadBalanced注解相关的知识,希望对你有一定的参考价值。
RestTemplate介绍
- RestTemplate是Spring Cloud访问Restful API的请求对象
- RestTemplate与HttpClient、OKHttp职能类似
@LoadBalanced注解
- @LoadBalanced是Ribbon提供的客户端负载均衡注解
- 通常RestTemplate与@LoadBalanced联合使用
创建订单服务
Spring Initializr
web->Spring Web
Spring Cloud Discovery -> Eureka Discover Client
Spring Cloud Routing -> Ribbon
确保pom.xml引入ribbon
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
appliaction.yml
spring:
application:
name: member-service
eureka:
client:
service-url:
defaultZone:
http://localhost:8761/eureka
入口类注入RestTemplate
@SpringBootApplication
@EnableEurekaClient
public class MemberServiceApplication
@Bean //注入
@LoadBalanced //Ribbon负载均衡,默认轮询
public RestTemplate restTemplate()
return new RestTemplate();
业务开发,服务间通信
@Controller
public class MemberController
@Resource
private RestTemplate restTemplate;
@GetMapping("/borrow")
@ResponseBody
public String borrow(String sn)
/*
RestTemplate负载均衡格式要求:
http://微服务id/webapi地址
*/
Book book = restTemplate.getForObject("http://book-service/bsn?sn=" + sn, Book.class);
return book.getName() + ":" + book.getDesc() + "图书借阅成功";
业务实体Book与JSON属性对应即可
public class Book
private String sn;
private String name;
private String desc;
public String getSn()
return sn;
public void setSn(String sn)
this.sn = sn;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getDesc()
return desc;
public void setDesc(String desc)
this.desc = desc;
以上是关于RestTemplate对象与LoadBalanced注解的主要内容,如果未能解决你的问题,请参考以下文章
restTemplate源码解析处理ClientHttpResponse响应对象