浏览 2369 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-20
这个是通过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了 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |