理解Spring AOP:连接点、切入点、通知与切面
需积分: 10 74 浏览量
更新于2024-08-18
收藏 1.4MB PPT 举报
"AOP的基本概念-SpringAOP APP"
在软件开发中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种编程范式,它旨在提高代码的可复用性和可维护性,通过将关注点(如日志、事务管理等)分离出来,使业务逻辑与系统服务解耦。Spring框架对AOP提供了强大的支持,让我们来深入理解AOP的核心概念。
1. **连接点(Jointpoint)**
连接点是程序执行过程中的特定点,例如方法的执行、构造函数的调用等。在Spring AOP中,连接点仅限于方法的执行,因为这是Java语言特性所允许的。每个连接点都是程序运行过程中可能被拦截的点,这为插入AOP增强提供了机会。
2. **切入点(Pointcut)**
切入点是连接点的集合,它定义了一组规则,用于确定哪些连接点将受到AOP的关注。Spring支持两种类型的切入点定义:Perl5正则表达式和AspectJ切入点表达式。AspectJ的表达式通常更为强大和灵活,可以精确地定位到类、方法、参数等。切入点是AOP的核心,它决定了通知将在何处应用。
3. **通知(Advice)**
通知是在特定连接点执行的代码,它是AOP中实际包含横切关注点的逻辑部分。根据执行时机的不同,通知分为四种类型:
- 前置通知(Before Advice):在目标方法执行前运行。
- 后置通知(After Advice):在目标方法执行后,无论其是否成功,都会运行。
- 返回通知(After Returning Advice):在目标方法正常返回后运行。
- 异常通知(After Throwing Advice):在目标方法抛出异常后运行。
- 环绕通知(Around Advice):最强大,它可以在方法执行前后执行自定义逻辑,并控制是否执行目标方法。
Spring通过动态代理机制实现了AOP,可以使用XML配置或注解方式定义通知,并通过拦截器链的形式将通知织入到连接点中。
4. **方面/切面(Aspect)**
切面是AOP中一个独立的模块,它封装了多个相关的通知和切入点。切面将横切关注点(如日志、事务管理)与业务逻辑分离,提高了代码的模块化程度。在Spring中,可以使用两种方式定义切面:基于Schema的XML配置和基于注解的@AspectJ方式。
实际应用中,我们可以创建一个切面类,该类包含了相关的通知方法和切入点定义。当满足切入点条件时,Spring会自动调用相应的通知方法,从而实现对目标方法的增强。例如,一个日志切面可能会在所有Service层的方法执行前后打印日志,而无需在每个方法中重复编写日志代码。
在给定的部分内容中,"beginmonitor"和"endmonitor"可能是日志切面的通知,它们在特定操作(如模拟删除Topic和Forum记录)前后打印日志,展示了AOP如何无侵入地增强原有代码的功能。
总结来说,Spring AOP通过连接点、切入点、通知和切面这些核心概念,实现了对业务代码的非侵入式增强,使得横切关注点的实现变得简单和高效。在实际开发中,利用这些概念可以有效地提升代码的可维护性和可扩展性。
2021-05-06 上传
2021-07-11 上传
2021-05-10 上传
2021-03-16 上传
2021-03-14 上传
2021-07-01 上传
2021-04-14 上传
2021-05-13 上传
简单的暄
- 粉丝: 26
- 资源: 2万+
最新资源
- pid控制器代码matlab-bobb:光束在光束平衡器上控制项目。有关更多详细信息,请参见dvernooy.github.io/projec
- java接口自动化案例
- css3 checkbox美化单选按钮和复选按钮美化样式
- 行业文档-设计装置-一种具有可移动风扇的笔记本散热器.zip
- cerbo:我的脑子里有什么
- awesome-farming:精心制作的一切的精选链接列表
- 德阁html.zip
- pid控制器代码matlab-Modeling-and-controlling-of-Electrical-DC-motor::在MATLAB
- 中国风创意书画展古风海报背景水墨书法
- CQL-Formatting-and-Usage-Wiki:一个协作工作区,用于开发用于工件开发的CQL格式约定和使用模式。 带有CQL示例的烹饪之家,请访问Wiki了解更多
- generation03
- jolloniego.github.io
- 像素:方格像素
- pid控制器代码matlab-Motor-PID-Controller-using-Arduino-Matlab:使用Arduino和Matl
- 牧场系统可视化系统 娱乐系统
- androidone:图形界面草图库,用于设计Android one应用程序