cglib 动态代理
1、引入字节码操作框架相关
jar包,创建被代理类:
package proxy.cglib;
public class Tom {
public void findLove(){
System.out.println("寻找灵魂伴侣");
};
}
2、创建代理类:
package proxy.cglib;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
public class CglibProxy implements MethodInterceptor {
public Object getInstance(Class<?> clazz) throws Exception{
Enhancer enhancer=new Enhancer();
//要把哪个设置为即将生成的新类的父类
enhancer.setSuperclass(clazz);
//由自己调用
enhancer.setCallback(this);
return enhancer.create();
}
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
//业务的增强
System.out.println("这里是珍爱网,已拿到你的要求,帮你寻找真爱");
methodProxy.invokeSuper(o,objects);
System.out.println("有情人终成眷属");
return null;
}
}
3、测试:
package proxy.cglib;
public class CglibProxyTest {
public static void main(String[] args) {
try {
Tom tom=(Tom)new CglibProxy().getInstance(Tom.class);
tom.findLove();
System.out.println(tom.getClass());
} catch (Exception e) {
e.printStackTrace();
}
}
}

cglib实现的动态代理,被代理类不需要实现接口。
cglib动态代理实践
本文详细介绍了使用cglib实现动态代理的过程,包括引入字节码操作框架相关jar包,创建被代理类,以及通过cglib生成代理类的具体代码示例。cglib允许被代理类无需实现接口即可进行动态代理。
334

被折叠的 条评论
为什么被折叠?



