首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring学习札记-AOP代理对象【2】

2012-11-04 
spring学习笔记--AOP代理对象【2】续上一张 @~~@ 这个是通过cglib来创建动态代理的 不需要实现PersonService

spring学习笔记--AOP代理对象【2】
续上一张 @~~@
这个是通过cglib来创建动态代理的 不需要实现PersonService接口

package javaeye;import java.lang.reflect.Method;import javaeye.service.impl.PersonServiceBean;import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.proxy.MethodProxy;public class CGlibProxyFactory implements MethodInterceptor{private Object targetObject;public Object createProxyIntance(Object targetObject){this.targetObject = targetObject;//原先是我们Proxy的instance来创建的,在这里我们用Enhancer来创建代理对象Enhancer enhancer = new Enhancer();//设置一个父类--》就是目标类,enhancer继承了目标类(this.targerObject)的所有的方法(非final)进行覆盖enhancer.setSuperclass(this.targetObject.getClass());//回调 跟jdk的回调一样的enhancer.setCallback(this);//return enhancer.create();}//下面的跟上一章的invoke()一样public Object intercept(Object proxy, Method method, Object[] args,MethodProxy  methodProxy) throws Throwable {PersonServiceBean bean = (PersonServiceBean) this.targetObject;Object result = null;if(bean.getUser()!=null){result = methodProxy.invoke(targetObject, args);}return result;}}

测试类:
@Test public void proxyTest2(){CGlibProxyFactory factory = new CGlibProxyFactory();PersonServiceBean service = (PersonServiceBean) factory.createProxyIntance(new PersonServiceBean("javaeye"));service.save("javaeye");}

到此为止已经实现了简单的AOP了

热点排行