public class CutomerService implements ICutomerService{
@Override
public void test(){
System.out.println("customer...test...");
}
public static void main(String[] args) {
CutomerService target = new CutomerService();
/**
* cglib实现
*/
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(CutomerService.class);
enhancer.setCallbacks(new Callback[]{new MethodInterceptor() {
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
System.out.println("cglib...start...");
Object result = methodProxy.invoke(target, objects);
System.out.println("cglib...after...");
return result;
}
}});
CutomerService proxy = (CutomerService) enhancer.create();
proxy.test();
/**
* jdk实现
*/
Object proxy = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("jdk...start...");
Object result = method.invoke(target, args);
System.out.println("jdk...start...");
return result;
}
});
ICutomerService cutomerService = (ICutomerService) proxy;
cutomerService.test();
}
}
动态代理(JDK、CGLIB)
最新推荐文章于 2025-11-25 12:11:25 发布
本文详细介绍了在Java中如何使用CGlib和JDK动态代理机制创建`CustomerService`接口的代理对象,展示了两种方法的实现过程和拦截功能。
2893

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



