RestTemplate在Spring Cloud中的三種用法

第一種,直接new一個RestTemplate實(shí)例將url寫死

@RestController
@Slf4j
public class ClientController {
    @GetMapping("/getProductMsg")
    public String getProductMsg() {
        // 第一種,直接使用restTemplate url寫死
        RestTemplate restTemplate = new RestTemplate();
        String resp = restTemplate.getForObject("http://localhost:8080/msg", String.class);
        log.info("resp={}", resp);
        return resp;
    }
}

第二種,利用Spring Cloud提供的LoadBalancerClient來獲取應(yīng)用的hostport

@RestController
@Slf4j
public class ClientController {
    // spring cloud 提供的
    @Autowired
    private LoadBalancerClient loadBalancerClient;
    @GetMapping("/getProductMsg")
    public String getProductMsg() {
        RestTemplate restTemplate = new RestTemplate();
        // 第二種 利用loadBalancerClient 通過應(yīng)用名獲取url,然后再使用restTemplate
        ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");
         String url = String.format("http://%s:%s", serviceInstance.getHost(), serviceInstance.getPort()) +           "/msg";
        String resp = restTemplate.getForObject(url, String.class);
        log.info("resp={}", resp);
        return resp;
    }
}

第三種,使用了Ribbon,利用@LoadBalanced注解可在RestTemplate中使用應(yīng)用的名字

先注冊一個RestTemplatebean

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

再注入使用

@RestController
@Slf4j
public class ClientController {
    @Autowired
    private RestTemplate restTemplate;
    @GetMapping("/getProductMsg")
    public String getProductMsg() {
        // 第三種 利用@LoadBalanced 可在restTemplate中使用應(yīng)用的名字
        String resp = restTemplate.getForObject("http://PRODUCT/msg", String.class);
        log.info("resp={}", resp);
        return resp;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,265評論 6 342
  • 斷斷續(xù)續(xù)看Ribbon的源碼差不多也有7-8天了,總算告一段落。本文記錄了這些天對源碼的閱讀過程與一些分析理解,如...
    程序猿DD閱讀 6,678評論 6 11
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,939評論 1 92
  • 簡介 Spring Cloud Ribbon是一個基于HTTP和TCP的客戶端負(fù)載均衡工具,它基于Netflix ...
    Chandler_玨瑜閱讀 252,175評論 22 183

友情鏈接更多精彩內(nèi)容