介绍
Spring Cloud OpenFeign 是 Spring Cloud 的一部分,提供了一种声明式的 HTTP 客户端方式来简化服务间的通信。通过 OpenFeign,开发者可以像调用本地方法一样,轻松地调用远程服务,而不需要手动处理 HTTP 请求、响应和连接等底层细节。
引入依赖
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.3</version> <!-- Spring Cloud OpenFeign 版本 -->
</dependency>
<!--负载均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>3.1.3</version> <!-- Spring Cloud OpenFeign 版本 -->
</dependency>
启用Openfeign
在启动类上添加@EnableFeignClients
@SpringBootApplication
@EnableFeignClients
public class Demo3Application {
public static void main(String[] args) {
SpringApplication.run(Demo3Application.class, args);
}
}
远程调用其他服务
定义服务接口
@FeignClient("java-goods") //要获取哪个服务的数据
public interface GoodsClient {
@GetMapping("/user/list")
List<Goods> list();
// List<Goods> list(@RequestParam("ids") List<Long> ids);
// 传承就这样写
}
接口不用去实现
调用其他服务
@RestController
@AllArgsConstructor
@RequestMapping("/user")
public class UserController {
private final IUserService userService;
private final GoodsClient goodsClient;
//远程调用
@GetMapping("/list")
public List<User> getList(){
System.out.println(goodsClient.list());
//远程调用
return userService.list();
}
}
连接池优化?
OpenFeign底层发起请求是使用HttpURLConnection发起的,每次连接都需要重新创建导致效率底下。
可以使用第三方框架进行优化
引入连接池
<!--openfeign连接池-->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
<version>11.6</version>
</dependency>
配置文件
feign:
okhttp:
enabled: true
开启成功!