网站首页 > 教程分享 正文
使用微服务做技术栈,spring-cloud提供了三种客户端的调用方式(结合我们公司的现状,目前使用的url的方式而非注册中心)。(spring-cloud的版本,1版本和2版本差异还是挺大的,需要具体分析)
<parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Dalston.SR4</version> </parent>
对应的springboot的版本
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.7.RELEASE</version> </parent>
如果要使用apache-httpclient作为客户端,对于springboot来说是非常简单的,只需要在pom里(默认使用maven进行管理)添加一下依赖就可以了。
<dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> <version>9.5.0</version> </dependency> 首先从依赖树上来进行查看一下 [INFO] +- org.springframework.cloud:spring-cloud-starter-feign:jar:1.3.6.RELEASE:compile [INFO] | +- org.springframework.cloud:spring-cloud-starter:jar:1.2.4.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot-starter:jar:1.5.7.RELEASE:compile [INFO] | | | \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.7.RELEASE:compile [INFO] | | | \- org.slf4j:jul-to-slf4j:jar:1.7.25:compile [INFO] | | +- org.springframework.cloud:spring-cloud-context:jar:1.2.4.RELEASE:compile [INFO] | | \- org.springframework.security:spring-security-rsa:jar:1.0.3.RELEASE:compile [INFO] | | \- org.bouncycastle:bcpkix-jdk15on:jar:1.55:compile [INFO] | | \- org.bouncycastle:bcprov-jdk15on:jar:1.55:compile [INFO] | +- org.springframework.cloud:spring-cloud-netflix-core:jar:1.3.5.RELEASE:compile 在org.springframework.cloud:spring-cloud-netflix-core:jar里我们看到 HttpClientFeignLoadBalancedConfiguration 这个类,直接贴源码分析 @Configuration @ConditionalOnClass(ApacheHttpClient.class) @ConditionalOnProperty(value = "feign.httpclient.enabled", matchIfMissing = true) class HttpClientFeignLoadBalancedConfiguration { @Autowired(required = false) private HttpClient httpClient; @Bean @ConditionalOnMissingBean(Client.class) public Client feignClient(CachingSpringLoadBalancerFactory cachingFactory, SpringClientFactory clientFactory) { ApacheHttpClient delegate; if (this.httpClient != null) { delegate = new ApacheHttpClient(this.httpClient); } else { delegate = new ApacheHttpClient(); } return new LoadBalancerFeignClient(delegate, cachingFactory, clientFactory); } } @Configuration:表明这是一个配置类 @ConditionalOnClass(ApacheHttpClient.class):表明依赖ApacheHttpClient这个类 feignclient这个方法其实最终返回的就是ApacheHttpClient 这个对象的实例了。 如此就直接使用ApacheHttpClient作为客户端了,比较简单。 这里顺便贴一下springboot2.0里代码 @Configuration @ConditionalOnClass(ApacheHttpClient.class) @ConditionalOnProperty(value = "feign.httpclient.enabled", matchIfMissing = true) class HttpClientFeignLoadBalancedConfiguration { @Configuration @ConditionalOnMissingBean(CloseableHttpClient.class) protected static class HttpClientFeignConfiguration { private final Timer connectionManagerTimer = new Timer( "FeignApacheHttpClientConfiguration.connectionManagerTimer", true); private CloseableHttpClient httpClient; @Autowired(required = false) private RegistryBuilder registryBuilder; 这里更换了httpcliet的具体实现,这块以后有时间在进行详细的分析。
猜你喜欢
- 2024-10-20 java 实现利用 RabbitMQ 发送和消费消息
- 2024-10-20 手把手讲解-OkHttp硬核知识点(2)(okhttp原理详解)
- 2024-10-20 XXL-JOB核心源码解读及时间轮原理剖析
- 2024-10-20 高并发场景下的 HttpClient 优化方案,QPS 大大提升!
- 2024-10-20 原来java结合docker这么简单!快来看看命令大全以及java结合使用
- 2024-10-20 Flink 实时计算 - 用户如何使用自定义 Jar 包
- 2024-10-20 分库分表实现方式Client和Proxy,性能和维护性该怎么选?
- 2024-10-20 K8S官方java客户端之三:外部应用(k8s官方java客户端之三:外部应用手册)
- 2024-10-20 在用httpclient发送post报文请求错误解决
- 2024-10-20 基于zabbix4.0监控tomcat服务及JVM内存
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)