使用cglib实现aop切面编程

来源:互联网 发布:javascript 常用 对象 编辑:程序博客网 时间:2024/06/06 17:04
public class CGlibProxyFactory implements MethodInterceptor{private Object targetObject;public Object createProxyIntance(Object targetObject){this.targetObject = targetObject;Enhancer enhancer = new Enhancer();enhancer.setSuperclass(this.targetObject.getClass());//非finalenhancer.setCallback(this);return enhancer.create();}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("xxx"));service.save("999");}

原创粉丝点击