代理和AOP
一.起源
有时,我们在写一些功能方法的时候,需要加上特定的功能.比如说在方法调用的前后加上日志的操作,或者是事务的开启与关闭.对于一个方法来说,很简单,只要在需要的地方增加一些代码就OK.但是如果有很多方法都需要增加这种特定的操作呢?
没错,将这些特定的代码抽象出来,并且提供一个接口供调用者使用:
这个类仅仅是实现了PeopleInfo接口而已.平平实实.好了.关键的地方来了.就在下面!
2.4创建一个代理类:
一直到这里,都和第二节没区别,好嘛,下面就是关键哟.
3.4创建一个代理类,实现了接口InvocationHandler:public class PeopleInfoProxy implements PeopleInfo{//接口的引用private PeopleInfo peopleInfo;//构造函数.针对接口编程,而非针对具体类public RecordLogProxy(PeopleInfo peopleInfo){this.peopleInfo = peopleInfo;}//实现接口中的方法public void record(){//1.记录日志RecordLog.recordLog();//2.方法的具体实现peopleInfo.getInfo();}}
这个是类是一个代理类,它同样实现了PeopleInfo接口.比较特殊的地方在于这个类中有一个接口的引用private PeopleInfo peopleInfo;.
楼主这个方法严重写错了,楼上的也没有改正确。
1.构造方法写的是错误的。
2.没有实现接口中的方法。
6 楼 lirig 2008-09-12 用spring的 事务,如果跟hibernat 结合的话,在一个事务里面控制了太多东西,是否会消耗太多内存? 7 楼 hanjs 2008-12-03 lz是写错了,没有实现接口的方法