在介绍了上面的例子后,我们来深入的研究一下AOP的一些基本概念。
1 切入点(Pointcut)
它是一些位置的集合,什么样的位置呢,是需要加入advice的位置集合。
2 通知(advice)
指在切入点处要加入的代码
3 Advisor
它是Pointcut和advice的集合,是将advice注入到Pointcut的代码
在Spring中提供了三种切入点,分别是静态切入电、动态切入点和自定义切入点。
1 静态切入点
静态切入点只限于给定的方法和目标类,而不考虑方法的参数。在Spring中,使用org.springframework.aop.support.RegexpMethodPointcut可以实现静态切入点。下面我们看一下代码
<bean id ="settersAndAbsquatulatePointcut"
class="org.springframework.aop.support.RegexpMethodPointcut">
<pjroperty name="patterns">
<list>
<value>.*save.*</value>
<value>.*do.*</value>
</list>
</property>
</bean>
2 动态切入点
于静态切入点不同,动态切入点不仅可以指定方法和类,还可以指定方法的参数,同时因为参数的变化,所以动态切入点不能缓存,需要每次调用的时候都要进行计算,损耗比较大。动态切入点的常见例子是控制流切入点。
关于控制流切入点:
Spring控制流切入点在概念上和AspectJ的cflow 切入点很相似, 虽然它的功能不如后者那么强大。(目前还不能让一个切入点在另外一个切入点所评估的连接点处执行)。 一个控制流切入点匹配当前的调用栈。例如,一个连接点被com.mycompany.web包内的一个 方法或者SomeCaller类调用,切入点就可能被激活。 控制流切入点是由org.springframework.aop.support.ControlFlowPointcut 类声明的。
同时注意:在执行时控制流切入点的开销是非常昂贵的,甚至与其它动态切入点比起来也是如此。在Java 1.4里,它的开销差不多是其它动态切入点的5倍;在Java 1.3中,这个比例甚至达到10倍动态切入点用的比较少。
3 自定义切入点
因为在Spring AOP中的切入点是Java类而不是语言的特性(后者像AspectJ中那样),所以可以声明自定义的切入点,不论是静态还是动态的。自定义切入点在Spring里可能很强大。即使这样我们仍推荐尽可能使用AspectJ切入点表达式语言。
分享到:
相关推荐
Spring AOP,即面向切面编程,是Spring框架的核心组件之一,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。...通过学习和实践,你可以更好地在Spring框架中利用AOP解决实际问题。
本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...
Spring IOC AOP学习示例代码,包含Spring常用操作示例和所有所需jar文件。参考博客:http://blog.csdn.net/daijin888888/article/details/51735291
`spring-aop.xsd`文件是Spring AOP配置的XML Schema定义文件,用于指导和验证XML配置中的元素和属性,确保其符合规范,同时也为IDE提供代码提示和自动补全功能,提高开发效率。 在Java开发中,AOP(Aspect Oriented...
通过这个例子,你可以学习到如何在Spring.NET环境中实现AOP,理解动态代理的工作原理,并掌握如何在实际项目中应用AOP来提高代码的灵活性和可维护性。这将有助于你编写更加模块化、易于维护的软件系统。
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...
通过这个实例工程,学习者可以直观地理解Spring AOP的工作原理,如何定义切面、配置通知以及如何在实际项目中应用。同时,它还能帮助开发者理解如何在不修改原始业务代码的情况下,实现通用功能的插入,提高代码的可...
在Spring中,AOP主要用于处理系统级别的横切关注点,如日志、事务、安全性等。它通过定义切入点(Pointcut)和通知(Advice)来实现。切入点是程序执行流程中的某个特定位置,而通知是在切入点触发时执行的代码。 1...
学习这个Demo,你需要理解每个部分的作用,分析源代码中的注解和逻辑,了解它们是如何与Spring AOP机制配合的。此外,通过运行测试用例,观察输出结果,你可以更深入地理解AOP的实际效果和应用场景。 总的来说,...
Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改源代码的情况下,通过...这个例子提供了学习Spring AOP实际操作的宝贵资源,通过阅读源码和运行测试,你将对Spring AOP有更全面的认识。
### Spring2-aop.pdf 关键知识点解析 #### 一、Spring 框架概述...通过以上内容的学习,我们可以深入了解 Spring 框架中的 AOP 技术,并能够将其应用于实际的项目开发中,从而有效地管理和优化应用程序的横切关注点。
在"Spring3.1.0Demo2-AOP"这个示例中,我们可能还会看到如何将AOP与Spring的其他功能(如IoC容器和依赖注入)结合使用,以创建一个完整的应用。例如,切面可能被注入到其他bean中,或者使用Spring的事务管理功能来...
- **SpringAOP.avi**:可能是一个视频教程,详细讲解了Spring AOP的概念和实践。 - **SpringAOP.doc**:可能是文档教程,包含了详细的步骤和示例代码。 - **SpringAOP_src.rar**:源代码示例,供你参考和实践。 - **...
### Spring AOP 学习资料知识点总结 #### 一、Spring AOP 概念与背景 **Spring AOP**(面向切面编程)是Spring框架中的一个重要组成部分,它通过预定义的切入点来分离关注点,使得核心业务逻辑更加清晰,同时能够...
**Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...
《深入理解Spring AOP:2024春季学习项目指南》 ...通过这个2024春季AOP学习项目,开发者将有机会亲手实践上述概念,深入理解Spring AOP的精髓,从而在实际项目中更好地运用这一强大的工具,提升代码质量与工程效率。
当我们谈论"spring AspectJ aop学习"时,我们将深入探讨Spring AOP如何结合AspectJ来实现更灵活的模块化和解耦。 首先,让我们理解AOP的概念。面向切面编程(Aspect Oriented Programming)是一种编程范式,旨在将...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从业务逻辑中分离出来,比如日志记录、事务管理、权限检查等。本篇文章将详细探讨Spring实现AOP的四种主要方法:基于代理的方式、...
在IT行业中,Spring框架无疑是Java开发领域的中流砥柱,而Spring AOP则是其核心组件之一。本资料包"spring-aop-4.2.6.RELEASE.zip"正是针对Spring AOP的一个重要版本,它与"spring-framework.zip"一同构成了强大的...
标题中的"spring-aop-4.2.xsd.zip"表明这是一个与Spring框架的AOP(面向切面编程)相关的资源,版本为4.2,并且是XML Schema Definition(XSD)文件的压缩包。XSD文件用于定义XML文档的结构和数据类型,它在Spring...