对Spring AOP中一些概念的理解

AOP可以方便的实现一些交叉事务的功能,使程序员能够专注于主要的业务逻辑。同事,也提高了程序的可维护性。但AOP的一些概念个人感觉比较难理解,而且翻译成中文就更晦涩难懂。自己慢慢有了一些体会,为了对付烂记性,写的不一定对,如果哪里有错误了,还希望网友能给指正。先谢谢了

Advice:通知

Advice定义了切面做什么,什么时候做。这里切面这个词又引入了另外的概念,这不循环定义了么?我的理解,Advice就是定义了你要交叉进主业务的那个业务要做什么,什么时候做。这个什么是后,其实就是方法调用前,调用后,还是前后都要,或抛出异常的情况下。其实说什么时候,确切的说也是什么地方啦。方法调用前/后,不也是程序中的某个点么。只不过为了同Pointcut区别,也为了更好理解和记忆,大多数资料上都把这个说成了什么时候

Jointpoint:连接点

Jointpoint是把切面插入到程序中的那些点,也就是在主业务中应用通知的那些时机。连接点更多是理论上的意义,如果不考虑程序的实际功能,你可以把每行代码都认为是一个Jointpoint

Pointcut:切点

Pointcut就是要应用Advice的一个或多个Jointpoint。Pointcut是Jointpoint的一个子集,是程序员选择要在主业务中weaving进交叉事务的地方

Aspect:切面

Advice和Pointcut的组合就是Aspect。它完整定义了一个交叉业务要做什么,它是要在何时,何地weaving进主业务中

Introduction:引入

Introduction可以让程序员对现有的类添加新方法和属性(Ruby程序员不要笑哦)。比如,我们可以创建一个类,利用一个变量和方法来记录对象最后一次改变的时间。然后就可以通过Introduction来把这个变量和方法引入到现有的类,增加现有类的功能

Target:目标

Target最容易理解,就是要被通知的那个对象。通过AOP,Target就可以只关注主要业务,而把交叉业务交给Aspect

Proxy:代理

Proxy就是Target被通知了之后实际的对象,是Aspect和Target实际结合的成果。实际上,从完成程序功能的角度上,Proxy才是程序员期望的那个对象,它包含了主要业务和交叉业务。只不过为了提高可维护性和生产率等原因,将主要业务留在了Target中,而将交叉业务交给了Aspect

Weaving:织入

Weaving是把Aspect应用到Target来创造Proxy的过程。Advice在指定的Pointcut上被Weaving进Target,从而产生Proxy对象。根据Weaving在Target生命周期中发生的时间,可以分为编译时织入,类加载时织入,运行时织入等.

相关推荐