Feign是一款是声明式的http客户端,它Netflix 公司产品,但是由于它停止更新,于是SpringCloud官方使用OpenFeign来代替它。接下来展示各个微服务之间使用OpenFeign来进行远程调用的具体操作方法。
操作步骤
假设有两个微服务A和B,它们两个都已经在注册中心上线,然后A去调用B的一个接口。A是调用者,B是被调用者。
我们找到调用者A的pom.xml文件,添加 如下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
二、在调用者A中编写接口,告诉SpringCloud这个接口需要调用远程服务
编写一个接口类,添加@FeignClient("lipsuper-awsome")
注解,然后直接把B服务中需要调用的方法名以及RequestMapping的完整路径拷贝过来。实例代码如下:
"lipsuper-awsome")
(public interface LipsuperFeignService {
"lipsuper/books/list")
( public R books();
}
// lipsuper-awsome是微服务B在注册中心注册的服务名
// books方法是B微服务中的某一个Controller中的
三、在调用者A的启动类上添加注解,开启远程调用功能
找到微服务A的启动类,添加注解@EnableFeignClients(basePackages = "com.lipsuper.awsome.feign")
来开启远程调用功能。括号里的basePackages
是指上面的LipsuperFeignService
接口所在包的全限定名。
示例代码:
basePackages = "com.lipsuper.awsome.feign")
(
public class LipsuperAwsomeApplication {
public static void main(String[] args) {
SpringApplication.run(LipsuperAwsomeApplication.class, args);
}
}
四、在调用者A中使用远程调用
在调用这A中具体的使用代码示例:
...
private LipsuperFeignService lipsuperFeignService;
"/mybook")
(public R mybook() {
...
R books = lipsuperFeignService.books();
...
}
文章评论