当前位置: 首页 > news >正文

切面aspect处理fegin调用转本地调用

切面处理fegin调用转本地调用

  • 问题:原fegin调用转本地调用
  • 详细描述
  • 方案
  • 代码实现
  • 总结

问题:原fegin调用转本地调用

项目原来是微服务项目服务与服务之间是通过fegin进行交互的,但是现在微服务项目要重构为单体项目,原fegin调用的方法要给为本地调用

详细描述

zyy-aiot

├── zyy-aiot-modules
│ └── zyy-account
│ └└── zyy-account-client
│ └└── zyy-account-client-api
│ └└── zyy-account-manage
│ └└── zyy-account-manage-api
│└── zyy-customer
│ └└── zyy-customer-client
│ └└── zyy-customer-client-api
│ └└── zyy-customer-manage
│ └└── zyy-customer-manage-api

├── zyy-aiot-service
│ └└── ZyyAiotServiceApplication.java

这是我的项目结构ZyyAiotServiceApplication.java是springboot启动类,(zyy-account-client-api,zyy-account-manage-api,zyy-customer-client-api,zyy-customer-manage-api)内部定义了Fegin给其他服务调用,下面是fegin的一个示例:

@FeignClient("zyy-aiot-service")
public interface AccountAlertConfMnFeign {@PostMapping("/manage/accountAlertConf/selectPhoneListByCustomerIdAndType")@ApiOperation(value = "根据客户id获取提醒人手机号列表", httpMethod = "POST")DataResult<AccountAlertConfDto> selectPhoneListByCustomerIdAndType(@RequestBody AccountAlertConfDto dto);}}

之前的zyy-account-client和zyy-customer-client就是通过feginClient进行交互的,现在不想分开部署这两个模块了,目前是将上面的模块打到一个jar包中运行。

方案

第一步.在spring启动时获取项目所有springMVC的controller对象。以及其中url和函数,放到公共容器中保存。
第二部.切面所以fegin接口,在调用fegin接口时通过url去匹配上一步获取到的对应controller对象和相关url接口函数发起调用并且返回结果

代码实现

获取springMVC对象

package com.zyy.aiot.service.config;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandle
http://www.lryc.cn/news/383468.html

相关文章:

  • Linux 磁盘挂载与分区
  • Open3D 将ShapeNet数据集txt转pcd
  • 综合项目实战--jenkins节点模式
  • WhaleStudio 2.6重磅发布!调度模块WhaleScheduler更新78项核心功能
  • 笔记101:OSQP求解器的底层算法 -- ADMM算法
  • Java银系统/超市收银系统/智慧新零售/ERP进销存管理/线上商城/h5/小程序
  • 大学网页制作作品1
  • 【会议征稿,IEEE出版】第三届机器人、人工智能与智能控制国际会议(RAIIC 2024,7月5-7)
  • 离线部署OpenIM
  • sql:between and日期毫秒精度过多导致的查询bug
  • 【日常记录】【JS】优雅检测用户是否在指定元素的外部点击
  • MySQL 5.7.42 主从复制环境搭建
  • 【Excel】单元格如何设置可选项、固定表头
  • 大模型ReAct:思考与工具协同完成复杂任务推理
  • 深入了解银行核心账务系统及其测试的重要性
  • 实习公司内部OA系统项目经验
  • Ansys Zemax|在设计抬头显示器(HUD)时需要使用哪些工具?
  • Linux系统移动光标类命令
  • Vitis Accelerated Libraries 学习笔记--Vision 库的组织结构
  • HTML+CSS 彩色浮雕按钮
  • ChatBI开源实现: 基于SuperSonic的AI+BI的产品设计
  • 【嵌入式Linux】i.MX6ULL 外部中断服务函数的初始化
  • 线性代数、矩阵计算
  • PostgreSQL 高级功能(五)
  • 食品企业仓储式批发零售一体化解决方案
  • chrome插件,修改对应URL的http请求的header头,包括ajax请求
  • C语言 | Leetcode C语言题解之第191题位1的个数
  • 【C++11(二)】lambda表达式和可变参数模板
  • 昇思25天学习打卡营第2天|张量Tensor
  • [leetcode]valid-triangle-number. 有效三角形的个数