webx request注入单例增强实现
来源:互联网 发布:睡过很多女生体验知乎 编辑:程序博客网 时间:2024/06/16 22:22
由于在spring中request对象的scope限制导致了request对象无法直接注入到单例bean中,所以webx对其进行了增强实现,达到单例注入的目的。
实现原理大致如下:
1 启动时注册全局的代理对象(解决request不能注入问题):
spring容器启动时加载RequestContextBeanFactoryPostProcessor,注册四个单例对象:HttpServletRequest,HttpSession,HttpServletResponse,RequestContext(封装的增强版对象)。
容器启动时执行:
加载:RequestContextBeanFactoryPostProcessor,注册全局的request单例bean对象。
2 代理增强(第一步已经实现了可以注入request到bean中了,当实际代码中调用request对象的方法时,会触发代理增强):
为了实现增强,webx在注入时使用了cglib动态代理,如下:实际调用时会进入对应代理工厂的getObject()。
这里request代理对象调用时会进入RequestProxyTargetFactory的getObject();
可以看到getObject时会从当前线程中去获取request对象。
综上:webx是通过cglib动态代理注册request的代理对象,然后当代理对象执行方法调用时都会进入到增强操作去当前线程获取最新的request对象然后执行相应方法。
response,session,还有webx增强后的requestContext三个对象均同理。
1 0
- webx request注入单例增强实现
- webx 中request 对象作为单例注入的实现
- webx-request context功能
- Webx框架:依赖注入
- webx参数注入
- webx-参数注入
- webx框架-依赖注入
- webx- Filter, Request Contexts, Pipeline
- spring 当中session或者request作用域注入单例bean的问题
- 使用动态代理实现对request和response的增强
- webX
- Webx
- webx
- spring单例注入init
- spring注解注入单例
- Webx MVC实现机制的详细分析
- 工单增强
- Spring单例Bean注入非单例Bean
- bzoj1478/1815[Shoi2006]color 有色图
- 如何将Eclipse中java工程上传到Github?
- Linux 线程分离状态
- React Native 启动白屏问题解决方案,教程
- java中的查找子字符串
- webx request注入单例增强实现
- hadoop job 重要性能参数
- CSS Positioning(定位)
- 翻转链表 II
- 内存之虚拟存储器
- Pandas 文本数据方法 replace( )
- Ionic 环境搭建
- C语言栈代码
- 【滤波器学习笔记】一阶RC低通滤波