在使用RestTemlate调用远程端口时,URL参数是以编程方式构造的,数据被发送到其他服务。在更复杂的情况下,我们将不得不RestTemlate深入到更低级别的API提供的甚至是API 的细节。所以呢,我们将在原有的代码上进行改变,使用feign进行远程调用。首先在pom文件中导包(或者在创建项目的时间直接选中‘省’),
<!-- Feign依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
启动类中加上
相应的service使用feign进行调用
重新启动项目,正常访问。
在日常的开发中,咱们还可能会配置他的日志
修改级别,这里时default,可以根据实际情况指定某个服务
feign.client.config.default.logger-level=full
还有就是feign的性能优化:下图
这里我们在链接池就使用 Apache Httpclient 做例子 首先pom文件导入依赖
<!--httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
然后在配置文件中进行配置(注解打过了,不多废话了),这里的最大连接数,单个路径最大链接数需要根据压测的实际配置
#设置级别
feign.client.config.default.logger-level=full
#使用httpclient
feign.httpclient.enabled=true
#最大连接数
feign.httpclient.max-connections=200
#单个路径最大连接数
feign.httpclient.max-connections-per-route=20
虽然现在feign已经配置完毕 ,但是在日常开发中,咱们的调用每一个api都这样是不是太麻烦,(重复开发了),所以呢咱们新建一个model
选一个这个(还有个lombok),其他和创建项目的时间一样,给demo2内的feign还有实体类拿过来
在我们的demo2的pom中导入我们刚建的这个feign
把demo2中的feign文件删掉(导过包了,还要他干啥) ,还有实体类都删掉
我们发现项目报错了,不用担心,只是找不到包了,重新导就好了 ALT+回车
进去了
在启动类中更改
//@EnableFeignClients(clients = DemoFeign.class)
@EnableFeignClients(basePackages = {"com.example.demo"})
其次,我们还需要改xml里面的
demo2配置文件中的
好了,启动,项目正常运行