spring aop

来源:互联网 发布:东软信息学院域名 编辑:程序博客网 时间:2024/05/21 09:51

大家可以读读这篇文章

http://www.cnblogs.com/xiaoluo501395377/p/3383130.html

 aop就是面向切面编程,简单的来说就是在不影响主流业务的情况下我们可以在其中穿插其他操作,就像一个空心的圆柱里面装满了东西,我用刀把圆柱切开,但是他竟然不会影响里面的东西,而且是按照原来的复原,可能我这样描述不准确,- -,我也是自己的理解表达不行,大家可以忽略不计

aop是面向对象(oop)的补充,oop适合从上到下,但是不适合从左到右,就是可能我某个功能要散布到所有对象层次中,并且这个功能对核心业务代码完全毫无关系,这些无关的代码成为横切,而在oop中,它导致了大量重复的代码,不利于模块的重用

而aop就是横切的,aop把系统软件分为两部分:核心关注点横切关注点    

业务处理主流程就是核心关注点,而与业务关系不打的部分就是横切关注点了, 横切关注点有一个特点就是经常发生在核心关注点的多处,而且基本相似,比如权限认证,日志,事务。aop作用就是吧这些分离出来 


而说到aop则要提到java的动态代理机制,动态代理有两个重要的类或接口 InvocationHandler(interface)和Proxy(class)

InvocationHandler

每一个动态代理类都要实现InvocationHandler 这个接口,并且每个代理类的实例都会关联到handler,当我们通过代理调用一个方法的时候这个接口的invoke来进行调用

     Proxy

这个类就是用来动态创建一个代理对象的类,一般我们用的最多的就是newProxyInstance这个方法


当使用代理时,我们可以在代理前加一些自己的操作,也可以在代理调用真是对象后加入自己的操作,比如日志等。。


具体代理请看上面的那个链接

0 0