openFeign是一个声明式http客户端。作用:基于springMVC常见注解,帮我们更优雅的实现http请求
引入依赖
<!--openFeign--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!--负载均衡器--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency>
在启动项加上注解@EnableFeignClients
编写接口
@FeignClient("item-service") public interface ItemClient { @GetMapping("/items") List<ItemDTO>queryItemsByIds(@RequestParam("ids") Collection<Long> ids); }
调用接口
List<ItemDTO> items = itemClient.queryItemsByIds(itemIds);
优化:连接池
<!--OK http 的依赖 --> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-okhttp</artifactId> </dependency>
feign: okhttp: enabled: true # 开启OKHttp功能
最佳实践:
1.新建一个module:hm-api,把每个模块的公共API都抽取出来,在新module中引入依赖
在之后的使用中仅需要引入maven坐标即可(缺点为耦合度较高)
注意,正常情况下扫描不到client,需要在启动类中修改注解
@EnableFeignClients("com.hmall.api.client")
2.每个微服务自己抽取一个module(缺点为麻烦,且工程结构比较复杂)
openfeign日志输出
public class DefaultFeignConfig { @Bean public Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } }
局部生效
@FeignClient(value = "item-service", configuration = DefaultFeignConfig.class)
全局生效
@EnableFeignClients(defaultConfiguration = DefaultFeignConfig.class)
标签:服务,openFeign,EnableFeignClients,module,DefaultFeignConfig,public,cloud From: https://www.cnblogs.com/kun1790051360/p/18151491