如何理解springaop

  初看aop,上来就是一大堆术语,并且还有个拉风的名字,面向切面编程,都说是oop的一种有益补充等等,一会儿让你不知所措,心想着:怪不得不少人都和我说aop多难多难。当我看进去之后,我才发现:它就是一些java基础上的朴实无华的应用,包括IOC,包括许许多多这样的名词,都是万变不离其中而已。java

  为何用aop?spring

一、 就是为了方便,看一个国外颇有名的大师说,编程的人都是“懒人”,由于他把本身作的事情都让程序作了。用了aop能让你少些不少代码,这点就够充分了吧。编程

二、 就是为了更清晰的逻辑,可让你的业务逻辑去关注本身自己的业务,而不去想一些其余的事情,这些其余的事情包括:安全,事物,日志等。安全

  初看这么多术语,一会儿都很差接受,慢慢来,很快就会搞懂。oop

一、 通知(Advice):就是你想要的功能,也就是上面说的安全事物日志等。你给先定义好吧,而后在想用的地方用一下! spa

二、 链接点(JoinPoint):这个更好解释了,就是spring容许你使用通知的地方,那可真就多了,基本每一个方法的前,后(二者都有也行),或抛出异常时均可以是链接点,spring只支持方法链接点,其余如aspectj还可让你在构造器或者属性注入时都行,不过那不是咱关注的,只要记住,和方法有关的前前虎吼(抛出异常),搜是链接点。代理

三、 切入点(Pointcut):上面说的链接点的基础上。来定义切入点,你的一个类里,有15个方法,那就是几十个链接点对吧!可是你并不想在多有方法赴京都使用通知(使用叫植入,之后再说),你只是想让其中的几个,在调用这几个方法以前、以后或者抛出异常时干点什么,那么就用切点来定义表这几个方法,让切点来筛选链接点,选中那几你想要的方法。日志

四、切面(Aspect):切面是通知和切入点的结合,如今发现了吧?没有链接点什么事情,链接点就是为了让你更好的理解切点,搞出来的。明白这个概念就好了。通知说明了干什么和何时干(何时是经过方法明中的before、after、around等能知道),而切入点说明了在哪干(指定到底那个方法)这就是一个完整的切面的定义。对象

五、引入(Introduction):容许咱们向现有的类添加新方法属性,这不就是把切面(也就是把新方法属性:通知定义的)用到目标类中吗?get

六、目标(Target):引入中所提到的目标类,也就是要被通知的对象,也就是真正的业务逻辑,他能够在绝不知情的状况下,被我们植入切面。而本身专一于业务自己的逻辑。

七、代理(Proxy):怎么实现整套的aop机制的,都是经过动态代理。

八、织入(Weaving):把切面应用到目标对象来建立新的代理对象的过程。 

相关文章
相关标签/搜索