AOP的实现机制.pdf
1 AOP各种的实现 ............................................................................................................... 2 2 AOP里的公民 ................................................................................................................... 3 3 AOP的实现机制 ............................................................................................................... 4 3.1 动态代理 ....................................................................................................................... 4 3.1.1 使用动态代理 ........................................................................................................... 4 3.1.2 动态代理原理 ........................................................................................................... 6 3.1.3 小结 ........................................................................................................................... 8 3.2 动态字节码生成 ........................................................................................................... 9 3.3 自定义类加载器 ......................................................................................................... 10 3.3.1 小结 ......................................................................................................................... 12 3.4 字节码转换 ................................................................................................................. 12 3.4.1 构建字节码转换器 ................................................................................................. 12 3.4.2 注册转换器 ............................................................................................................. 13 3.4.3 配置和执行 ............................................................................................................. 13 3.4.4 输出 ......................................................................................................................... 14 4 AOP实战 ......................................................................................................................... 15 4.1 方法监控 ..................................................................................................................... 15 4.1.1 如何使用 ................................................................................................................. 15 4.1.2 如何配置 ................................................................................................................. 15 4.1.3 小结 ......................................................................................................................... 18 4.2 参考资料 ..................................................................................................................... 18 AOP(面向切面编程)是一种编程范式,旨在将横切关注点与业务主体逻辑分离,以提高模块化。AOP的实现机制主要分为静态织入和动态织入两大类。静态织入在编译期进行,而动态织入在运行期执行。 AOP实现机制中涉及到的几个核心概念包括: - Joinpoint(连接点):程序执行过程中的某个特定点,比如方法调用或异常抛出等。 - Pointcut(切点):一组Joinpoint的集合,即通过表达式确定的感兴趣的连接点。 - Advice(通知):在特定Joinpoint处执行的动作,包括前置通知(BeforeAdvice)、后置通知(AfterAdvice)、返回通知(AfterReturningAdvice)、异常通知(AfterThrowingAdvice)和环绕通知(AroundAdvice)。 - 目标(Target):被代理的对象。 - 代理(Proxy):为目标对象创建的代理类。 - 织入器(Weaver):负责将切面逻辑织入到目标对象中的组件。 - InvocationHandler(调用处理器):动态代理中,当代理的方法被调用时,处理器的invoke方法会被执行。 动态代理机制在运行期为目标类生成一个实现了其接口的代理类。这个代理类会将切面逻辑包装起来。使用动态代理时,通常需要以下角色: 1. 被代理的类(目标类)。 2. 被代理类实现的接口。 3. 织入器,负责创建代理实例。 4. InvocationHandler,包含Advice和Pointcut。 动态代理的优点是灵活性强,但缺点是需要实现接口。动态代理在运行期动态地为接口创建代理类,然后通过InvocationHandler将切面逻辑植入到代理类中。 动态字节码生成包括自定义类加载器和字节码转换两种方式。自定义类加载器可以在运行期动态构建字节码文件生成目标类的子类,并将切面逻辑加入到子类中。而字节码转换则是在所有类加载器加载字节码之前进行拦截,能够对大部分类进行织入操作。 字节码转换机制可以分为以下几个步骤: 1. 构建字节码转换器。 2. 注册转换器。 3. 配置和执行。 4. 输出转换后的字节码。 在AOP实战中,方法监控是一个常见的应用场景。通过AOP,可以在方法执行前后或抛出异常时执行自定义的逻辑(例如日志记录)。实现方法监控时需要明确如何使用和配置代理及切面。 值得注意的是,AOP的实现不会对非代理对象产生影响。但是,如果需要织入的类或者方法被声明为final,那么AOP将无法进行织入。此外,如果代码中使用了其他的类加载器,那么这些类将无法被织入。 AOP的实现机制比较复杂,但基本上可以分为静态织入和动态织入两大类,动态织入又分为动态代理、动态字节码生成和字节码转换。了解并掌握这些机制对于进行面向切面编程的开发人员至关重要。
剩余18页未读,继续阅读
- sshzdw2013-08-21资料很详细,讲解细致,清除AOP的三种实现方法一目了然,难得一见的好资料
- 粉丝: 12
- 资源: 69
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Kotlin语言的Android开发工具类集合源码
- 零延迟 DirectX 11 扩展实用程序.zip
- 基于Java的语音识别系统设计源码
- 基于Java和HTML的yang_home766个人主页设计源码
- 基于Java与前端技术的全国实时疫情信息网站设计源码
- 基于鸿蒙系统的HarmonyHttpClient设计源码,纯Java实现类似OkHttp的HttpNet框架与优雅的Retrofit注解解析
- 基于HTML和JavaScript的廖振宇图书馆前端设计源码
- 基于Java的Android开发工具集合源码
- 通过 DirectX 12 Hook (kiero) 实现通用 ImGui.zip
- 基于Java开发的YY网盘个人网盘设计源码