zoukankan      html  css  js  c++  java
  • 使用RestTemplate进行服务调用的几种方式

    首先我们在名为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;
        }
  • 相关阅读:
    启动另外一个activity,并返回结果
    MySQL5.0版本的安装图解
    android 通过Eclipse进行数字签名
    asp.net 未能写入输出文件--“拒绝访问的解决办法
    NeatUpload——支持大文件上传的控件
    ImageView的缩放模式
    开启手机LogCat
    得到Access数据库中的所有表名
    如何保护Excel工作表,不被人修改或删除指定区域
    Excel实现下拉列表选择
  • 原文地址:https://www.cnblogs.com/zytcomeon/p/15545119.html
Copyright © 2011-2022 走看看