SpringCloud-OpenFegin的使用
OpenFegin 的使用
自定义接口
引入 jar 包
1
2
3
4
5<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>增加注解,在 application 增加注解@@EnableFeignClients,启用 feign
配置服务地址
1
2
3# 配置指定服务的提供者的地址列表
\ =
localhost:8188因为是继续 ribbon 的学习,所以会使用一些 ribbon 的配置。
创建接口
1
2
3
4
5
6
public interface OrderFeginClient {
String orders();
}注意这里的 client 是 spring-cloud-order-service,配置文件里面配置的是 order-service.ribbon.listOfServers(有效地址是 order-service)
使用
1
2
3
4
5
6
7
8
9
10
11
public class TestOpenFeginController {
private OrderFeginClient orderFeginClient;
private String orders(){
return orderFeginClient.orders();
}
}
通过依赖调用第三方服务
新建 maven 项目
定义接口
1
2
3
4
5
6
7
8public interface IOrderService {
String orders();
int add(OrderDto orderDto);
}实现接口
1
2
3
4
5
public interface OrderServiceClient extends IOrderService {
}这里的地址是 order-service,没有加上 spring-cloud
引入该项目
1
2
3
4
5<dependency>
<groupId>com.example</groupId>
<artifactId>order-api</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>调用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class FeignTestController {
private OrderServiceClient orderServiceClient;
private String feign(){
return orderServiceClient.orders();
}
private int add(){
return orderServiceClient.add(new OrderDto());
}
}
OpenFeign 找不到类的案例
重写搭建了一个项目。来练习 springcloud。结果发现注入了 feign 的接口中,怎么都注入不进去,对比两者之间的差异没有找到原因,后面才发现是因为扫描包路径的问题。
依赖接口所在的路径为 com.example
引入的接口所在项目的 application 所在的路径为 com.example.userservice
引入方式:
1 |
|
这个时候会扫描不到接口实现,有 2 种方式解决。
方案 1:将 UserServiceApplication 移动到 com.example 目录下即可(实际情况下,很多时候包的路径都不一致,下策)
方案 2:设置 feign 的包扫描路径
1
2
3
4
5
6
7
8
9
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 zeofuns!