springcloud中RestTemplate的三种使用方式

首先在A应用Controller中写个方法 例如:

package com.hlvy.hlvyeclient.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * HttpClienTest
 *
 * @author heng
 **/
@RestController
@RequestMapping("httpclien")
public class HttpClienTest {

    @RequestMapping("httpstr")
    public String gethttpstr(){
        return  "hello http clien";
    }
}

接着在b应用调用

package com.hlvy.order.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

/**
 * 第三种方法配置
 * RestTemplateConfig
 *
 * @author heng
 **/
@Component
public class RestTemplateConfig {

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

 

package com.hlvy.order.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * HttpClient
 *
 * @author heng
 **/
@RestController
@RequestMapping("client")
@Slf4j
public class HttpClient {
//第二种方式
  /*  @Autowired
    private LoadBalancerClient loadBalancerClient*/;
//第三种方式
    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("clitest")
    public String hclient(){  //跨服务调用
        //第一种方法直接使用RestTemplate  url写死
      /*  RestTemplate restTemplate = new RestTemplate();
        String res = restTemplate.getForObject("http://localhost:8081/httpclien/httpstr",String.class);
        log.info(res+"---------------------------");*/

        //第二种方法 利用loadBalancerClient通过应用名获取url 然后再使用 RestTemplate
      /*  RestTemplate restTemplate = new RestTemplate();
        ServiceInstance serviceInstance = loadBalancerClient.choose("HLVYCLIENT");
        String url =  String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort()+"/httpclien/httpstr");
        String res = restTemplate.getForObject(url,String.class);
        log.info(res+"---------------------------666");*/
      //第三种方式 利用@LoadBalanced注解 可在restTemplate使用应用名字
       String str = restTemplate.getForObject("http://HLVYCLIENT/httpclien/httpstr",String.class);
       log.info(str+"-------------------------------------777");
        return str;
    }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值