传智播客Spring视频教程学习笔记16
2009-08-11 11:55
381 查看
使用CGLIB实现AOP功能与AOP概念解释
前面的proxy技术必须在类实现了接口的前提下才可以实现权限的控制,cglb可以在类不实现接口的情况下完成。
在spring文件夹下lib/cglib下找到cglib的jar库文件,加入工程。
CGlibProxyFactory.java
AOPTest.java
CGlib的enhance继承了目标类所有非final方法,对这些方法进行覆盖。创建的代理对象是目标对象的子类
前面的proxy技术必须在类实现了接口的前提下才可以实现权限的控制,cglb可以在类不实现接口的情况下完成。
在spring文件夹下lib/cglib下找到cglib的jar库文件,加入工程。
CGlibProxyFactory.java
package cn.pf.aop; import java.lang.reflect.Method; import cn.pf.aop.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; Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(this.targetObject.getClass()); enhancer.setCallback(this); return enhancer.create(); } @Override public Object intercept(Object proxy, Method method, Object[] arg2, MethodProxy arg3) throws Throwable { PersonServiceBean personServiceBean = (PersonServiceBean)targetObject; Object result = null; if(personServiceBean.getUser() != null){ result = method.invoke(targetObject, arg2); } return result; } }
AOPTest.java
@Test public void proxyTest2(){ CGlibProxyFactory factory = new CGlibProxyFactory(); PersonServiceBean personServiceBean = (PersonServiceBean) factory.createProxyIntance(new PersonServiceBean("1")); personServiceBean.save("111"); }
CGlib的enhance继承了目标类所有非final方法,对这些方法进行覆盖。创建的代理对象是目标对象的子类
相关文章推荐
- 传智播客Spring视频教程学习笔记10
- 传智播客Spring视频教程学习笔记12
- 传智播客Spring视频教程学习笔记3
- 传智播客Spring视频教程学习笔记5
- 传智播客Spring视频教程学习笔记8
- 传智播客Spring视频教程学习笔记13
- 传智播客Spring视频教程学习笔记15
- 传智播客Spring视频教程学习笔记17 18
- 传智播客Spring视频教程学习笔记19
- 传智播客Hibernate视频教程学习笔记16
- 传智播客Spring视频教程学习笔记1 2
- 传智播客Spring视频教程学习笔记6
- 传智播客Spring视频教程学习笔记14
- 传智播客Spring视频教程学习笔记19
- 传智播客Spring视频教程学习笔记4
- 传智播客Spring视频教程学习笔记9
- 传智播客Spring视频教程学习笔记20
- 传智播客Spring视频教程学习笔记7
- 传智播客Spring视频教程学习笔记11
- 传智播客Hibernate视频教程学习笔记14