我看了些书,在网上也查了些资料,但说的都差不多,很书面,对spring的AOP仍不甚理解,spring的AOP到底是如何工作的?为什么要用它?还请大侠们指点一二

解决方案 »

  1.   

    通过动态代理完成的
    面向切面的编程
    比如一个类A有一个a()方法a()方法只是简单的,
    但是我可以通过aop实现 你在执行a()方法之前执行a1()方法
    a()方法执行之后执行a2()方法..反正就是拦截你的方法,拦截前后都可以执行别的代码
      

  2.   

    没错,AOP就是面向切面编程,是通过动态代理实现的。他可以让你不改变目标类的代码而对目标对象增加新的功能,也就是你想要执行目标对象的一个方法,但是在执行这个方法的之前或之后做一些其他的工作,不用aop的话,你就得在这个类的方法里面增加代码来做这些工作,但是如果用了aop,利用声明式编程,只需在xml中配置,不需要在类里面增加代码就增加了新的功能。最著名的就是spring的事务管理,比如你要对service层的一个方法增加事务,按原始的方法就可以在这个方法里面begintransaction来开启事务,但是如果用spring来管理事务,spring就是用的aop思想管理事务,只需要在xml中配置一下事务管理,将这个方法添加进xml文件,就可以对该方法添加事务了,完全没有改变类的代码。目标对象根本就对这个事务一无所知。这里有几个概念:
    (1)切入点:你想增强的方法;
    (2)目标对象:切入点所在的类实例对象
    (3)通知:是一个方法,你想对目标对象增强的那个方法添加什么功能,都写到这个方法里
    (4)切面:通知所在的类
    个人理解:AOP就是用切面的通知对目标对象的切入点进行加强其实现是通过动态代理实现的,也就是说通过代理,你的目标对象的方法被增强,你使用的都是代理对象。
      

  3.   

    自己动手写个AOP 比任何书上看到的理解的都深