SpringCloud的Ribbon+RestTemplate的三种使用方式分别是什么
SpringCloud的Ribbon+RestTemplate的三种使用方式分别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 成都创新互联公司是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于网站设计、网站制作、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!
方式一:直接使用new实例化RestTemplate对象
@GetMapping("getUserList")
public List getUserList(){
RestTemplate template = new RestTemplate();
return template.getForObject(
"http://localhost:8080/getUserList",//
List.class);
}
缺点:
1、url硬编码,如果ip有变动,需要在代码中更改
2、如果client为集群,有多个url,该方法只能配一个url;不能使用集群模式
方式二:注入LoadBalancerClient ,获得应用名称为providerServcidName(备注:服务提供者名称)的应用的其中一个实例,获得url,再使用RestTemplate获取数据,实现负载均衡
@RestController
public class UserController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@GetMapping("getUserList")
public List getUserList() {
RestTemplate template = new RestTemplate();
// 选择服务实例,根据传入的服务名serviceId,
// 从负载均衡器中挑选一个对应服务的实例。
ServiceInstance instance = loadBalancerClient
.choose("providerServcidName");
String url = String.format("http://%s:%s",
instance.getHost(),
instance.getPort() + "/getUserList");
return template.getForObject(url, List.class);
}
}
方式三:RestTemplate通过配置注入Spring容器来使用
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
在controller中注入RestTemplate对象,直接调用getForObject方法,注意url中直接写应用名称,不要写ip:port
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class UserController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("getUserList")
public String getUserList() {
return restTemplate
.getForObject("http://providerServcidName/getUserList", List.class);
}
}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
本文标题:SpringCloud的Ribbon+RestTemplate的三种使用方式分别是什么
分享地址:http://ybzwz.com/article/iescjo.html