栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate

RestTemplate restTemplate;

@GetMapping(“/test”)

public String test() {

String result = restTemplate.getForObject(“http://alibaba-nacos-discovery-server/hello?name=didi”, String.class);

return "Return : " + result;

}

}

@Bean

@LoadBalanced

public RestTemplate restTemplate() {

return new RestTemplate();

}

}

可以看到,在定义RestTemplate的时候,增加了@LoadBalanced注解,而在真正调用服务接口的时候,原来host部分是通过手工拼接ip和端口的,直接采用服务名的时候来写请求路径即可。在真正调用的时候,Spring Cloud会将请求拦截下来,然后通过负载均衡器选出节点,并替换服务名部分为具体的ip和端口,从而实现基于服务名的负载均衡调用。

关于这种方式,可在文末仓库查看完整代码示例。而对于这种方式的实现原理,可以参考我之前写的这篇文章的前半部分:[Spring Cloud源码分析(二)Ribbon 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 ](()

[](()使用WebClient


WebClient是Spring 5中最新引入的,可以将其理解为reactive版的RestTemplate。下面举个具体的例子,它将实现与上面RestTemplate一样的请求调用:

@EnableDiscoveryClient

@SpringBootApplication

public class TestApplication {

public static void main(String[] args) {

SpringApplication.run(TestApplication.class, args);

}

@Slf4j

@RestController

static class TestController {

@Autowired

private WebClient.Builder webClientBuilder;

@GetMapping(“/test”)

public Mono test() {

Mono result = webClientBuilder.build()

.get()

.uri(“http://alibaba-nacos-discovery-server/hello?name=didi”)

.retrieve()

.bodyToMono(String.class);

return result;

}

}

@Bean

@LoadBalanced

public WebClient.Builder loadBalancedWebClientBuilder() {

return WebClient.builder();

}

}

可以看到,在定义WebClient.Builder的时候,也增加了@LoadBalanced注解,其原理与之前的RestTemplate时一样的。关于WebClient的完整例子也可以通过在文末的仓库中查看。

[](()使用Feign


上面介绍的RestTemplate和WebClient都是Spring自己封装的工具,下面介绍一个Netflix OSS中的成员,通过它可以更方便的定义和使用服务消费客户端。下面也举一个具体的例子,其实现内容与上面两种方式结果一致:

第一步:在pom.xml中增加openfeign的依赖:

org.springframework.cloud

spring-cloud-starter-openfeign

第二步:定义Feign客户端和使用Feign客户端:

@EnableDiscoveryClient

@SpringBootApplication

@EnableFeignClients

public class TestApplication {

public static void main(String[] args) {

SpringApplication.run(TestApplication.class, args);

}

@Slf4j

@RestController

static class TestController {

@Autowired

Client client;

@GetMapping(“/test”)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号