小鸦-spring AOP的小模拟
来源:互联网 发布:淘宝轮番图片尺寸 编辑:程序博客网 时间:2024/04/29 03:11
首先, 为什么要用AOP?
不用AOP的话, 我们需要手动添加大量重复代码到 不同类的 method
结论, 它作用就是 动态的复制+粘帖
我们需要做的是
1. 不改变原来的class以及其method
2. 让class增加其他功能
3. 动态
这三点结合起来, 在字节码上操作是不可能, 也就只能创造一个class.
1. 原本功能 记做 origin.Method();
2. 额外功能 记做 extra.before(), extra.after();
这种做法, 就已经很自然可以想到 代理模式了
//这种想法实现,首先我们要一个代理类public AOPproxy implement originInterface{Object extra;//以及set功能originInterface origin;//以及set功能 Method(){ extra.before(); origin.Method(); extra.after(); }}//这里的originInterface, 是为了让其他类调用时, 不会感觉到异常, 类似继承的功能
从上面, 我们就可以看到, 剩下要做啥?
1. extra要动态
2. origin要动态
动态, 常规做的两点
1. 配置文件 (e.g. xml文档)
2. 一堆烦人的反射
3. 一个平台(Spring)执行操作
现在, 我们主要要解决的是烦人的反射
1. 动态代理, 帮我们解决origin动态的问题
2. 我们就只需要关注 动态代理 里 extra类 怎么实现就可以了
//改一下接口,就变成动态代理了public AOPproxy implement InvocationHandler {Object extra;//以及set功能@override public Object invoke(Object proxy, Method method, Object[] args){ extra.before(); Object result = method.invoke(target, args); extra.after(); }}
extra类的操作, 根据配置文档, 获得class, 再找到对应的method, 再调用方法就可以了… (= =)
扩展阅读:
动态代理模式: https://www.ibm.com/developerworks/cn/java/j-lo-proxy1/
吐槽: 本来不想改的..被面试官问到且无法流畅回答, 只能这样写, 以后被免的时候直接拿出来
0 0
- 小鸦-spring AOP的小模拟
- spring AOP小实例
- spring aop小例子
- Spring AOP小例子
- 基于注解的spring aop小例子
- 使用Spring AOP的一个小细节
- 模拟Spring的AOP
- Spring aop 小实例demo
- Spring AOP增强小例子
- Spring AOP增强小例子
- Java利用动态代理模拟实现Spring的AOP(面向切面编程)功能的小实践
- 关于Spring中AOP的一个小例子程序
- Spring Aop 实现一个简单的memcached小插件
- spring AOP 简单的配置 示例小程序
- 使用Spring AOP应该注意的一个小细节
- Spring-aop 日志管理小例子
- Spring AOP小测试(ProxyFactoryBean)
- spring AOP 环绕增强小Demo
- Java成员内部类
- AppBarLayout.OnOffsetChangedListener的使用
- error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [17]”转换为“LPCTSTR”
- (在线文库系统)centos nginx mysql php openoffice pdf2swf pdf2image
- android:layout_gravity和android:gravity的区别
- 小鸦-spring AOP的小模拟
- hibernate级联删除
- 程序员必须知道的10大基础实用算法及其讲解
- 一篇文章通透理解序列号实现原理
- 已知最大公约和最小公倍数,求可能的解的组数
- 全排列 dfs(深度搜索)
- hdu1058 Humble Numbers--DP
- boost的内存管理
- java实现一个二叉查找树的各种操作