首先我们在名为MSG的服务中定义一个简单的方法

@RestController
public class ServerController { @GetMapping("/msg")
public String msg() {
return "this is a msg";
}
}

我们需要在另一个服务中调用这个服务的方法,除了使用httpclient之外,我们还能用RestTemplate(RestTemplate是Spring提供的用于访问Rest服务的客户端)

第一种方式,这种方式只要指定url和返回类型即可调用,但是url是写死的,非常不方便。

@GetMapping("/getMsg")
public String getMsg(){
RestTemplate restTemplate=new RestTemplate();
String response=restTemplate.getForObject("http://localhost:8080/msg",String.class);
return response;
}

当我们的服务有多个URL的时候,第一种方式肯定是不行的,所以第二种方式是使用Spring Cloud提供的LoadBalancerClient

@GetMapping("/getMsg")
public String getMsg(){
RestTemplate restTemplate=new RestTemplate();
ServiceInstance serviceInstance=loadBalancerClient.choose("MSG");
String url=String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort());
String response=restTemplate.getForObject(url,String.class);
return response;
}

第三种方法我们可以使用注解的方式,先把RestTemplate配置成bean,@LoadBalanced是开启负载均衡的注解

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

然后把这个RestTemplate注入进来调用

@Autowired
private RestTemplate restTemplate; @GetMapping("/getMsg")
public String getMsg(){
String response=restTemplate.getForObject("http://MSG/msg",String.class);
return response;
}

使用RestTemplate进行服务调用的几种方式的更多相关文章

  1. springcloud 服务调用的两种方式

    spring-cloud调用服务有两种方式,一种是Ribbon+RestTemplate, 另外一种是Feign.Ribbon是一个基于HTTP和TCP客户端的负载均衡器,其实feign也使用了rib ...

  2. spring boot2X整合Consul一使用RestTemplate实现服务调用

    Consul可以用于实现分布式系统的服务发现与配置 服务调用有两种方式: A.使用RestTemplate 进行服务调用 负载均衡——通过Ribbon注解RestTemplate B.使用Feign ...

  3. Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  4. [转]Linux中设置服务自启动的三种方式

    from:http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统 ...

  5. dubbo服务运行的三种方式

    dubbo服务运行,也就是让生产服务的进程一直启动.如果生产者进程挂掉,也就不存在生产者,消费者不能进行消费. Dubbo服务运行的三种方式如下:1.使用Servlet容器运行(Tomcat.Jett ...

  6. (转)Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  7. 【转发】Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  8. DLL调用的两种方式(IDE:VC6.0,C++)

    原文:http://www.cnblogs.com/Pickuper/articles/2050409.html DLL调用有两种方式,一种是静态调用,另外一种是动态调用 (一)静态调用 静态调用是一 ...

  9. Eureka 中服务下线的几种方式

    原文:https://blog.csdn.net/qq_15071263/article/details/85276486#1_6 Eureka 中服务下线的几种方式1.直接停掉服务根据默认的策略,如 ...

随机推荐

  1. 开放-封闭原则(OCP)

    怎样的升级才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本呢?开放-封闭原则(The Open-Closed Principle, OCP)为我们提供了指引.软件 ...

  2. mysql删除大表

    在mysql中遇到一个大表,大概有17G左右,在对这个表进行查询.修改时均遇到了很大的困难,于是想着删除这张表.通常的删除操作可以通过delete.drop.truncate操作,试了这三个命令,但是 ...

  3. Unity编辑器环境在Inspector面板中显示变量

    Serialize功能Unity3D 中提供了非常方便的功能可以帮助用户将 成员变量 在Inspector中显示,并且定义Serialize关系. 简单的说,在没有自定义Inspector的情况下所有 ...

  4. python 与开源Gis 书本知识点测试

    # -*- coding: utf-8 -*- print(u"python与开源QGis课题研究组")#print("汉字") #++++++++++++++ ...

  5. sqlserver2016 kb补丁

    1. win2012r2 安装时 总是提示: 然后费了半天劲 下载下来又提示 找了一下 需要先安装这么一个补丁才可以 KB2919442 然后才能安装上 KB2919355 然后就可以正常安装了:

  6. JS Array.apply会有内存泄漏问题

    报错内容: Maximum call stack size exceeded 参考:https://www.jianshu.com/p/b9ba0ddd3392 对象较多,前端JS内存溢出: 数组克隆 ...

  7. mysql 日期总结

    select to_days(now()) #737733 select date_format(now(),'%Y-%m-%d') #2019-11-05 select CURRENT_DATE() ...

  8. Flutter 中的常见的按钮组件 以及自定义按钮组件

    Flutter 里有很多的 Button 组件很多,常见的按钮组件有:RaisedButton.FlatButton. IconButton.OutlineButton.ButtonBar.Float ...

  9. [转]3D渲染管线

    转自:http://tgerm.org/SRP/ 在3D中有两种渲染管线,分别是图形渲染管线和GPU渲染管线. 图形渲染管线 <Render-Time Rendering Third Editi ...

  10. osg创建灯光

    添加光照 osg::ref_ptr<osg::Node> MyOSGLoadEarth::CreateNode() { osg::ref_ptr<osg::Group> _ro ...