16_传智播客Spring2.5视频教程_使用CGLIB实现AOP功能与AOP概念解释
2009-04-12 11:12
896 查看
代理对象 和目标对象 没有实现接口
将代理对象 设置成 目标对象的 子类
package xxl.aop.one.service.proxy;
import java.lang.reflect.Method;
import xxl.aop.one.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 argertObject = null;
public Object createProxyInctance(Object object) {
this.argertObject = object;
//代理对象类
Enhancer enhancer = new Enhancer();
//将目标对象设置为代理对象的父类
enhancer.setSuperclass(object.getClass());
//设置本身为 回调用对象
enhancer.setCallback(this);
// 生成并返回代理对象
return enhancer.create();
}
/**
* @param proxyObject 代理对象
* @param method 被拦截到的方法
* @param args 被拦截到的方法的参数列表
* @param methodProxy 代理方法对象
*/
public Object intercept(Object proxyObject, Method method, Object[] args,
MethodProxy methodProxy) throws Throwable {
PersonServiceBean bean = (PersonServiceBean) this.argertObject;
Object result = null;
if (bean.getUser() != null){
result = methodProxy.invoke(this.argertObject, args);
}
return result;
}
}
将代理对象 设置成 目标对象的 子类
package xxl.aop.one.service.proxy;
import java.lang.reflect.Method;
import xxl.aop.one.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 argertObject = null;
public Object createProxyInctance(Object object) {
this.argertObject = object;
//代理对象类
Enhancer enhancer = new Enhancer();
//将目标对象设置为代理对象的父类
enhancer.setSuperclass(object.getClass());
//设置本身为 回调用对象
enhancer.setCallback(this);
// 生成并返回代理对象
return enhancer.create();
}
/**
* @param proxyObject 代理对象
* @param method 被拦截到的方法
* @param args 被拦截到的方法的参数列表
* @param methodProxy 代理方法对象
*/
public Object intercept(Object proxyObject, Method method, Object[] args,
MethodProxy methodProxy) throws Throwable {
PersonServiceBean bean = (PersonServiceBean) this.argertObject;
Object result = null;
if (bean.getUser() != null){
result = methodProxy.invoke(this.argertObject, args);
}
return result;
}
}
相关文章推荐
- 15_传智播客Spring2.5视频教程_使用JDK中的Proxy技术实现AOP功能
- ITCAST视频-Spring学习笔记(使用CGLIB实现AOP功能与AOP概念解释)
- 15_传智播客Spring2.5视频教程_使用JDK中的Proxy技术实现AOP功能 2
- 15_传智播客Spring2.5视频教程_使用JDK中的Proxy技术实现AOP功能 3
- Spring第九弹—使用CGLIIB实现AOP功能与AOP概念解释
- (转)使用CGLIB实现AOP功能与AOP概念解释
- 使用CGLIB实现AOP功能与AOP概念解释
- 使用CGLIB实现AOP功能与AOP概念解释
- 使用CGLIB实现AOP功能与AOP概念解释
- Spring学习笔记(14)----使用CGLIB实现AOP功能
- ITCAST视频-Spring学习笔记(使用JDK中的Proxy技术实现AOP功能)
- 12_传智播客Spring2.5视频教程_编码剖析@Resource注解的实现原理
- 10_传智播客Spring2.5视频教程_使用构造器装配属性
- 使用jdk和cglib实现spring的aop功能
- 使用jdk和cglib实现spring的aop功能
- 传智播客Spring视频教程学习笔记16
- Spring整理12 -- 面对切面(AOP)3 -- 使用CGLIB实现AOP
- 加强2注解。泛型。类加载器及其委托机制。代理的概念与作用原理,AOP概念。实现AOP功能的封装与配置。类似Spring。
- aop学习总结二------使用cglib动态代理简单实现aop功能
- 传智播客Spring2.5视频教程_编码剖析Spring依赖注入的原理 3