第三章:Spring AOP API 设计与实现1
需积分: 0 77 浏览量
更新于2022-08-03
收藏 285KB PDF 举报
Spring AOP API 设计与实现是Spring框架的重要组成部分,它提供了面向切面编程的能力,使得开发者可以在不修改源代码的情况下,对程序进行横切关注点的处理,如日志记录、事务管理等。本章主要涵盖了Spring AOP的多个核心概念和实现机制。
1. **整体设计**:Spring AOP API的设计目标是为应用程序提供灵活的切面编程能力。它通过AOP代理来拦截方法调用,执行相应的Advice,实现了切面的透明插入。
2. **接入点接口 - Joinpoint**:Joinpoint是程序执行过程中的一个特定点,例如方法调用或字段访问。Spring支持方法执行作为Joinpoint,允许开发者在这些点上插入Advice。
3. **Joinpoint条件接口 - Pointcut**:Pointcut是Joinpoint的集合,定义了一组特定的Joinpoints,满足某种条件(如特定的方法名、包名等)。Pointcut用于定位需要应用Advice的Joinpoints。
4. **Pointcut操作 - ComposablePointcut**:ComposablePointcut允许开发者组合多个Pointcut,以创建更复杂的匹配规则。
5. **Pointcut便利实现 - AspectJExpressionPointcut**:此实现使用AspectJ表达式语言来定义Pointcut,提供了强大的匹配功能。
6. **Advice执行动作**:Advice是在Joinpoint处执行的实际行为,如Before Advice(在方法执行前运行)、After Advice(在方法执行后运行)。
7. **Before Advice**:在Joinpoint(通常是方法)执行之前执行的Advice,通常用于验证或准备工作。
8. **After Advice**:在Joinpoint执行之后执行的Advice,可以用来清理工作或者处理异常情况。
9. **Advisor**:Advice容器接口,将Pointcut和Advice结合在一起,定义了何时以及如何应用Advice。
10. **Introduction**:Introduction允许在目标对象上添加新的接口和属性,扩展对象的行为。
11. **Interceptor适配器 - AdvisorAdapter**:适配不同的Advice类型,使其能被AOP代理使用。
12. **AopProxy**:AOP代理接口,负责创建能够拦截并执行Advice的对象。Spring提供了两种实现:JDK Dynamic Proxy和CGLIB。
13. **JDK AopProxy实现 - JdkDynamicAopProxy**:当目标对象实现了至少一个接口时,Spring使用Java动态代理来创建AOP代理。
14. **CGLIB AopProxy实现 - CglibAopProxy**:对于没有接口的目标对象,Spring使用CGLIB库生成子类以创建代理。
15. **AdvisedSupport**:AopProxy工厂配置管理器,负责管理Advisor和目标对象信息。
16. **AdvisorChainFactory**:顾问链工厂接口,负责构建和管理Advisor链。
17. **TargetSource**:目标对象来源接口,可以切换或共享目标对象,例如实现线程安全的单例。
18. **ProxyCreatorSupport**:代理对象创建基础类,提供通用的代理创建逻辑。
19. **AbstractAutoProxyCreator**:IoC容器自动代理抽象,根据配置自动创建代理对象。
20. **AspectJEnable模块驱动实现 - @EnableAspectJAutoProxy**:注解驱动方式启用AspectJ自动代理。
21. **AspectJ XML配置驱动实现 - `<aop:aspectj-autoproxy/>`**:XML配置方式启用AspectJ自动代理。
22. **Schema-based配置**:包括 `<aop:config/>`, `<aop:aspect/>`, `<aop:pointcut/>`, `<aop:around/>`, `<aop:before/>`, `<aop:after/>`, `<aop:declare-parents/>`, 和 `<aop:scoped-proxy/>`,这些XML元素用于声明和配置切面、Pointcut、Advice等。
23. **AOP Infrastructure Bean接口 - AopInfrastructureBean**:标识那些对AOP框架至关重要的bean。
24. **AOP上下文辅助类 - AopContext**:提供访问当前AOP代理的方法。
25. **AOP工具类**:包括`AopProxyUtils`和`AopUtils`,提供与AOP相关的实用工具方法。
26. **面试题精选**:这部分可能包含了一些关于Spring AOP API的常见面试问题和解答。
Spring AOP API的设计与实现是一个复杂而灵活的系统,它通过AOP代理、Advisor、Pointcut和Advice等组件,实现了对应用程序的横切关注点的解耦和封装,从而提高了代码的可维护性和复用性。理解并熟练运用这些概念和API,可以帮助开发者编写出更加优雅和高效的代码。

食色也
- 粉丝: 38
最新资源
- 中职会计信息化教学模式的构建策略剖析.docx
- 计算机vb二级考试经典课件.ppt
- 加工中心刀具库选择PLC控制系统设计.doc
- AJAX-JSP实现WEB文件上传进度控制.doc
- 浅论互联网+时代下职业教育的教学六大变.docx
- 大数据的安全体系.docx
- 基于物联网技术构建智能电力计量体系.docx
- MATLAB频谱分析仪设计方案.doc
- 实验五面向对象编程进阶(一).doc
- 通信工程专业实践教学研究.doc
- 大数据与A-CDM结合提升机场运行效率和质量.docx
- 大数据技术全解:基础、设计、开发与实践.docx
- 计算机网络维护工作相关探讨.docx
- 电网调自动化系统的不安全因素及对策.doc
- 本科课程设计基于Android的手机电池保姆软件的设计与实现.doc
- 试论新形势下图书馆信息化管理的有效途径1.docx