spring的AOP是基于代理的。java的事务控制是基于代理的。这两句话熟悉吧,一些老鸟就喜欢用这些词汇让我们犯晕,让我们感到他们很专业。这里我们将打破这个神话,本篇先介绍基于代理的AOP。这里我们先展示下什么叫做代理,先从静态代理开始。
一个静态代理的例子。
1、定义一个接口
2、一个实现接口的实例
3 、调用的静态代理类
上边就是我们的静态代理类,代理了我们IHello接口的实现类,并加上了自己的日志输出,在IHello的实现类的hello方法每次被调用的时候,都会被在其前后加上日志。
结果如下:
信息: method start at Sun Mar 15 10:57:31 CST 2009
2009-3-15 10:57:32 com.itcast.aop.HelloProxy hello
信息: method end at Sun Mar 15 10:57:32 CST 2009
以上就是静态代理,原理很简单,目的也很简单,就是调用接口实现类的某个方法之前或者之后调用另外的操作。
总结下开发步骤:
1、创建一个接口
2、创建一个接口的实现类
3、创建一个代理类,这个代理类也实现了上边的接口,但是将 要被代理的实现类传入到代理类中,在代理类的接口实现方法中调用,并在调用前后加上一些操作(上边的就是日志操作而已)