• 切面aspect处理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
  • 相关阅读:
    Flutter Image组件如何处理图片加载过程中的错误?
    springboot @Scheduled和@Async
    【Linux】环境变量
    路由器拨号失败解决方法
    光学数值孔径
    神经网络初始化实例化的维度与调用输入数据的维度
    【PyTorch深度学习项目实战100例】—— 基于AlexNet实现宠物小精灵(宝可梦)分类任务 | 第49例
    Redhat 8更换yum网络源(aliyun)
    LeetCode每日一题(985. Sum of Even Numbers After Queries)
    WebRTC系列-网络传输之5选择最优connection切换
  • 原文地址:https://blog.csdn.net/cmw1085215666/article/details/139884847