http-invoker插件原理解析
背景
- 项目中不可避免的使用第三方api接口,但是如果使用apache-httpclient总是不可避免需要设置连接池等,即使每次拷贝对于项目来说也显得冗余
http-api-invoker的方式可以使用注解的方式,定义api接口
<!--变更http包依赖--><dependency><groupId>com.bj58.dadiyang</groupId><artifactId>http-api-invoker</artifactId><version>1.0.2</version><exclusions><exclusion><artifactId>fastjson</artifactId><groupId>com.alibaba</groupId></exclusion></exclusions></dependency>
@HttpApiScan({"com.bj58.xx.httpinvoker"}) 对于springboot项目需要在application类引入
@RetryPolicy
@HttpApi("${xxx}")
public interface ConfigSvcApi {@HttpReq(timeout = 10000,value = "/theme/saveThemeConfig", method = "POST")HttpApiResult<Void> saveThemeConfig(ThemeParam param);@HttpReq(timeout = 10000,value = "/theme/getThemeConfig")HttpApiResult<String> getThemeConfig(@Param("salesBspId") String salesBspId, @Param("configType") String configType);}
原理分析
@Documented
@Target({ElementType.TYPE})
@Import({HttpApiConfigurer.class})
@Retention(RetentionPolicy.RUNTIME)
public @interface HttpApiScan {String[] value() default {""};String[] configPaths() default {""};
}
1.HttpApiScan通过Import注解引入了HttpApiConfigurer 类
@Component
public class HttpApiConfigurer implements BeanDefinitionRegistryPostProcessor, ApplicationContextAware {private static final Logger logger = LoggerFactory.getLogger(HttpApiConfigurer.class);private static final String CLASSPATH_PRE = "classpath:";private static final String FILE_PRE = "file:";private ApplicationContext ctx;public HttpApiConfigurer() {}
2.HttpApiConfigurer实现了 BeanDefinitionRegistryPostProcessor, ApplicationContextAware 接口 ,会在spring ioc初始化的过程中调用,将通过注解引入的api定义成一个GenericBeanDefinition交给spring-ioc管理
http-invoker插件原理解析相关推荐
- MyBatis插件原理解析及自定义插件实践
一.插件原理解析 首先,要搞清楚插件的作用.不管是我们自定义插件,还是用其他人开发好的第三方插件,插件都是对MyBatis的四大核心组件:Executor,StatementHandler,Param ...
- android黑科技系列——微信抢红包插件原理解析和开发实现
一.前言 自从几年前微信添加抢红包的功能,微信的电商之旅算是正式开始正式火爆起来.但是作为Android开发者来说,我们在抢红包的同时意识到了很多问题,就是手动去抢红包的速度慢了,当然这些有很多原因导 ...
- 自定义实现webpack插件原理解析
webpack插件构成部分 一个具名javascript函数 在他的原型上定义apply方法 指定一个触及到 webpack本身的事件钩子 操作webpack内部的特定实例数据 实现功能后调用 web ...
- Android插件化原理解析——ContentProvider的插件化
目前为止我们已经完成了Android四大组件中Activity,Service以及BroadcastReceiver的插件化,这几个组件各不相同,我们根据它们的特点定制了不同的插件化方案:那么对于Co ...
- Android 插件化原理解析——Service的插件化
在 Activity生命周期管理 以及 广播的管理 中我们详细探讨了Android系统中的Activity.BroadcastReceiver组件的工作原理以及它们的插件化方案,相信读者已经对Andr ...
- Android插件化原理解析——广播的管理
在Activity生命周期管理 以及 插件加载机制 中我们详细讲述了插件化过程中对于Activity组件的处理方式,为了实现Activity的插件化我们付出了相当多的努力:那么Android系统的其他 ...
- Android 插件化原理解析——插件加载机制
上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务:通过Hook AMS和拦截ActivityThread中H类对 ...
- Android 插件化原理解析——Activity生命周期管理
之前的 Android插件化原理解析 系列文章揭开了Hook机制的神秘面纱,现在我们手握倚天屠龙,那么如何通过这种技术完成插件化方案呢?具体来说,插件中的Activity,Service等组件如何在A ...
- Android插件化原理解析——Hook机制之Binder Hook
Android系统通过Binder机制给应用程序提供了一系列的系统服务,诸如ActivityManagerService,ClipboardManager, AudioManager等:这些广泛存在系 ...
最新文章
- Jeff Dean亲笔盘点谷歌AI 2019:日均2篇论文,纵横16大方向,一文汇集重要开源算法...
- Servlet、Filter、Listener、Interceptor基础
- oracle定时任务失效
- 网站高并发及高并发架构详解
- 计算机 数据库知识点,数据库知识点总结
- TCP状态转移:有限状态机
- 衡量激光雷达性能好坏的标准是什么?
- SharePoint 2010 获取列表全部定义方法
- 2020公务员考试应届毕业生的身份界定
- 计算机网络原理基础知识点总结
- 音频处理——解析PCM格式实例(音量调控)
- 什么是数据库的存储过程?
- poscms-说明文档
- “卖给我一支笔”:乔布斯会如何应对这个经典问题?
- 计算机无线网卡连接网络,无线网络连接不稳定
- 【3分钟秒懂】MCU启动流程详解 基于NXP MPC574xG
- ceph kernel rbd (一): 简介
- 保姆级使用PyTorch训练与评估自己的MobileNetV2网络教程
- iOS 逆向编程(九 - 1)通过 USB 连接登录 iPhone 以及端口映射
- MapReduce工作流程图