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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39313596/article/details/83590791