首页 > 其他分享 >Feign的使用

Feign的使用

时间:2023-11-12 21:02:59浏览次数:27  
标签:10 Feign args order public 使用 type class

1.http客户端Feign

RestTemplate方式调用存在的问题

e/user/" + order. getUserId(); 
User user = restTemp1ate.getForObject(ur1, User. class);

2.Feign的介绍

Efiü: https://github.com/OpenFeign/feign 
Feign makes writing java http clients easier 
(litter i0in 0 PASSED 
maven central Il 
Feign is a Java to HTTP client binder inspired by Retrofit, JAXRS-2.O, and WebSocket. Feign's first goal was 
reducing the complexity of binding Denominator uniformly to HTTP APIs regardless of ReSTfulness.

3.定义使用Feign客户端

<groupld.org . springframework . cloud< / groupld> 
starter-openfeign</artifactld> 
@SpringB00tAppIication 
public class OrderAppIication 
public static void args) { 
SpringApp1ication. run (OrderAppLication. class , 
args) ;

 

public interface UserC1ient { 
User Long id); 
AEßZfi: userservice 
• iå*fiit: GET 
• MEG: /user/{id) 
• Msn: Long id 
• User

 

@Autowired 
private UserCIient userCIient; 
public Order queryOrderById(Long orderld) { 
= orderMapper.findById(orderId); 
Order order 
// 2. f///{/FeignQ&'httpiå>ß, 
User user 
// 3. frkuser9/J0rder 
order. setUser(user) ; 
// 4. BPI 
return order;

总结

Feign的使用_Feign的使用_02

 

4.Feign的自定义配置
未命名图片.png, feign.Logger.Level 
feign. codec.Decoder 
feign.codec.Encoder 
feign. Contract 
feign. Retryer 
NONES BASIC* HEADERS, FULL 
NESpringMVCfi;N$  
(1)实现自定义修改的两种方式
未命名图片.png, hit—: gemi#fiit 
feign : 
client: 
config : 
17Ææs•sgn 
default: 
loggerLevet: FULL # 
feign : 
client : 
config : 
userservice: 
ØÆÆ5ÆS-gn, 
loggerLevet: FULL # E,æQB/J  
未命名图片.png, javaftßhit, 
public class FeignCIientConfiguration { 
@Bean 
public Logger. Level 
return Logger . Level.BASIC; 
@Enab1eFeignCtients (defaultconfiguration 
= FeignC1ientConfiguration .class) 
= "userservxce•• , 
configuration : FeignCtientConfiguration . class)  
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图


未命名图片.png, javaftßhit, 
public class FeignCIientConfiguration { 
@Bean 
public Logger. Level 
return Logger . Level.BASIC; 
@Enab1eFeignCtients (defaultconfiguration 
= FeignC1ientConfiguration .class) 
= "userservxce•• , 
configuration : FeignCtientConfiguration . class)  
注意:注意全局注解和局部注解的配置区别,分别在不同的配置类中进行声明
总结
未命名图片.png, FeignËjaË6dN: 
feign.cIient.config.xxx.IoggerLeveI  
调试错误是可以使用 FULL 日志级别 
日常开发可以使用 BASIC 日志级别
记录日志也会消耗一定性能

墨迹绘图
墨迹绘图


5.Feign的性能优化
未命名图片.png, Feign 底 层 的 客 户 端 实 现 : 
URLConnection: 默 认 实 现 , 不 支 持 连 接 池 
. »qpache HttpClient : 支 持 连 接 池 
OKHttp : 支 持 连 接 池 
因 此 提 高 Feign 的 性 能 主 要 手 段 就 是 使 用 连 接 池 代 替 默 认 的 URLConnection 。  
(1)性能优化—连接池配置
未命名图片.png, <!--httpCtient99ÉtØ 
<dependency> 
github . openfeign</groupld> 
<artifactld>feign-httpctient</artifactld> 
</dependencp 
feign : 
client : 
config: 
default : 
loggerLevet 
: BASIC # 
httpclient : 
enabled: true 
max -connections . 
• 260 # R*99i$ÆZt 
max-connections-per-route: 5@  

总结
未命名图片.png, FeignfiVt%: 
O SIÀfeign-httpClient4üü 
@ EHÑ#HEhttpClientlhfiE, 
2.  
墨迹绘图
墨迹绘图
如果不设置,可能会出现所有请求占有一个路径


未命名图片.png, FeignfiVt%: 
O SIÀfeign-httpClient4üü 
@ EHÑ#HEhttpClientlhfiE, 
2.


6.Feign最佳实现
未命名图片.png, hit— 
public interface UserAPI{ 
User Long id) ; 
= "userservice") 
public interface User-Client extends UserAPI{} 
@RestContr01ter 
public class UserControLIer implements UserAPI{  
使用继承的方式产生的问题:会造成紧耦合,父接口改变,其下子类也会改变。而且这种继承方案对springMVC不起作用,方法参数继承不下来
好处:面向契约编程,企业也有使用

未命名图片.png, fritz (fin) : 
feign-api 
UserC1ient 
User 
DefaultConfig 
order-service 
pay-service 
user-service 
UserControIter  
这种方法的耦合度相对较低些

(1)抽取式FeignClient的实现方式
未命名图片.png, 2. 
3. 
4. 
5. 
$€hfeign-api, 
User. 
Gorder-service#GlÄfeign-apifi4Nft  
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图
墨迹绘图


未命名图片.png, 2. 
3. 
4. 
5. 
$€hfeign-api, 
User. 
Gorder-service#GlÄfeign-apifi4Nft  
产生的问题定义的FeignClient无法被springMVC扫描,
UserClient' that could not be found.

解决方案:
未命名图片.png, fiit—: 
= "cn .itcast.feign.ctients") 
fritz: 
= {UserC1ient. class})  

总结
未命名图片.png, @ 8FeignClient, POJO*  

未命名图片.png, FeignC1ientFfiGfi@


标签:10,Feign,args,order,public,使用,type,class
From: https://blog.51cto.com/u_16227669/8330856

相关文章

  • MediatR基本使用
    MediatR可以在进程内实现消息通信。一、安装MediatR程序包管理控制台执行以下代码:dotnetaddpackageMediatR--version12.1.1二、注册MediatR服务services.AddMediatR(cfg=>{cfg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly());});三、发送消......
  • 使用vue路由
    1.安装vue-router对应版本号为233344使用以下命令[email protected]或者[email protected].在main.js里面使用vue-routerimportVuefrom'vue'importAppfrom'./App.vue'importVueRouterfrom'vue-router'Vue.config.product......
  • 数字IC后端使用的各类文件及解释
    最后修改日期:2023/11/121.HDL综合(使用SDC)这里以SynopsysDesignCompiler(SDC)为例解释。工艺是SMIC130。1.1.TCL(ToolCommandLanguage)配置文件(.tcl)使用TCL对SDC过程进行配置。1.1.1.SDC参数配置下面展示了一些对SDC进行配置的tcl语句。setDC_S_DESIGN<TOP......
  • AHF安装以及使用
    AHF简介1.AHF的诞生就是为了与时俱进,让DBA们收集系统日志以及故障日志更加快捷,同时让Oracle也能够快速定位问题并提供对应的解决方案,号称是每个DBA必备工具。2.AHF现在默认绑定在DB12+以及GRID12+的RU中,同时最新的版本也可以通过patch:30166242获取,其对应RU与AHF版本历史如下:......
  • python3使用pymsql操作mysql数据库
    操作系统:Windows10_x64python版本:3.9.2pymysql版本:1.0.2MySQL版本:5.7.38 之前写过一篇关于python操作mysql数据库的文章:https://www.cnblogs.com/MikeZhang/p/pythonOptMysql20170703.html当时是基于python2.7和mysql5.5来整理的,但目前python2.7已经不再维护,主......
  • Vue使用vuex刷新页面后state数据丢失
    使用 createPersistedState做持久化安装:npminstallvuex-persistedstate--save使用:importVuefrom'vue';importVuexfrom'vuex';importcreatePersistedStatefrom'vuex-persistedstate'importnavCollapsefrom'./modules/navCol......
  • openGauss学习笔记-121 openGauss 数据库管理-设置密态等值查询-使用JDBC操作密态数据
    openGauss学习笔记-121openGauss数据库管理-设置密态等值查询-使用JDBC操作密态数据库121.1连接密态数据库连接密态数据库需要使用驱动包gsjdbc4.jar,具体JDBC连接参数参考基于JDBC开发章节介绍。JDBC支持密态数据库相关操作,需要设置enable_ce=1,示例如下。publicstaticConne......
  • 如何在“radio”输入字段中使用“required”属性
    内容来自DOChttps://q.houxu6.top/?s=如何在“radio”输入字段中使用“required”属性我只是想知道如何正确使用HTML5中的新输入属性"required"来处理单选按钮。每个单选按钮字段是否都需要像下面这样的属性,或者只有一个字段有该属性就足够了?<inputtype="radio"name="colo......
  • 在除法运算中,使用'/'和'//'有什么区别?
    内容来自DOChttps://q.houxu6.top/?s=在除法运算中,使用'/'和'//'有什么区别?使用其中一种比另一种有什么好处吗?在Python2中,它们似乎返回相同的结果:>>>6/32>>>6//32在Python3.x中,5/2会返回2.5,而5//2会返回2。前者是浮点除法,后者是取整除法,有时也称为整数除法。......
  • Sonarqube 二进制的安装与简单使用
    Sonarqube二进制的安装与简单使用背景使用容器安装sonarqube发现无法使用PG数据库尝试了很长时间没搞定想了想还是使用二进制的方式进行部署吧.下载https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.2.1.78527.zip这个应该是2023.11的最......