在介绍了上面的例子后,我们来深入的研究一下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_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结
Spring IOC AOP学习示例代码,包含Spring常用操作示例和所有所需jar文件。参考博客:http://blog.csdn.net/daijin888888/article/details/51735291
NULL 博文链接:https://microjava.iteye.com/blog/525796
2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑实现 (需要知道原理的请看spring aop源码,此处不做赘述) 3、可在现有源码上快速进行功能扩展 4、spring boot,mybatis,druid,spring aop的使用
Spring框架的关键组件之一是面向方面编程(AOP)框架。 面向方面的编程需要将程序逻辑分解成不同的部分。 此教程将通过简单实用的方法来学习Spring框架提供的AOP/面向方面编程。
Spring之AOP配置文件详解.txt Spring之AOP配置文件详解.txt 帮助你更快张握Java的学习!
自己学习spring课程的笔记。笔记都是根据尚硅谷的课程(spring ioc,spring aop,spring mvc,spring boot等)写的。 主要内容:spring ioc,spring aop,spring mvc,spring boot
Spring中的AOP可以控制权限,在我们做项目的时候,用Struts的过滤方法也可以实现。 当然这个文件只是提供测试,我们主要是学习这个AOP的思想。大家下载后可以再摸索......
SpringAOP学习笔记以及四个可运行的Demo,涵盖经典代理模式、基于注解、基于xml配置这3方面的Demo
这个是上文描述的那个项目资料,spring -aop
Spring Aop 学习笔记
这是一个学习spring框架aop技术的一个很好的实例。
spring框架aop使用的jar包,需要链接到博客里,因为学习spring经常对所用 jar包迷糊,需要做整理。还望不要误删了....
spring的aop使用实例,对于深入学习spring这有很大的作用
spring aop经典例子的源代码,这个是学习spring aop特性的第一步
NULL 博文链接:https://linres.iteye.com/blog/281221
很好的学习SpringAOP的资料,对于初学者和中级开发者都有很大帮助
基于xml代码的SpringAOP实例详解,适合初步学习springAOP的开发人员了解该功能的使用。
spring aop简单例子,入门学习的好资料
帮助初学者深入理解Spring的好资料