码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 切面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
  • 相关阅读:
    Svelte 实现 keypress 快捷键功能
    中外联合培养工商管理博士|社科大新加坡社科大学中文授课DBA
    安卓LinearLayout让控件居中的办法
    VSCode 占用内存过高
    Android Studio配置
    【C++】类和对象demo-实现日期类
    小白入门深度学习 | 6-5:Inception-v1(2014年)详解
    umi4中的配置问题,我想用umirc.ts中alias配置没起作用。是我的用法不对吗?
    深入浅出WMS之出库流程解析
    labview串口大数据量报错的一种解决思路(通过tcp进行写入和读取串口数据)
  • 原文地址:https://blog.csdn.net/cmw1085215666/article/details/139884847
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号