以下内容主要是针对遇上cglib怎么实现代理设计模式等问题,我们该怎么处理呢。下面这篇文章将为你提供一个解决思路,希望能帮你解决到相关问题。
1. CGLIB介绍
CGLIB(Code Generation Library)是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。它广泛的被许多AOP的框架使用,例如Spring AOP和synaop,为他们提供方法的interception(拦截)。CGLIB包的核心类是Enhancer,Enhancer是CGLIB的字节码增强器,它可以方便的对类进行扩展。
2. CGLIB实现代理设计模式
CGLIB实现的动态代理是通过生成一个被代理类的子类,然后重写父类的方法来实现的。下面是使用CGLIB实现动态代理的步骤:
1)创建Enhancer对象,创建一个给定类的动态子类;
2)为动态子类设置父类;
3)定义拦截器;
4)调用Enhancer对象的create方法创建代理类;
5)通过代理类调用目标方法。
3. 代码实现
public interface UserService {
public void add();
}
public class UserServiceImpl implements UserService {
public void add() {
System.out.println("add");
}
}
public class MyInterceptor implements MethodInterceptor {
public Object intercept(Object obj, Method method, Object[] args,
MethodProxy proxy) throws Throwable {
System.out.println("before");
Object result = proxy.invokeSuper(obj, args);
System.out.println("after");
return result;
}
}
public class CglibProxy {
public static void main(String[] args) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(UserServiceImpl.class);
enhancer.setCallback(new MyInterceptor());
UserService o = (UserService)enhancer.create();
o.add();
}
}
总结
以上就是为你整理的cglib怎么实现代理设计模式全部内容,希望文章能够帮你解决相关问题,更多请关注本站相关栏目的其它相关文章!