首先创建被代理类的接口
public interface UserService {
public void add();
public void delete(int id);
}
接口的实现类
public class UserServiceImpl implements UserService {
public void add() {
System.out.println("This is add service");
}
public void delete(int id) {
System.out.println("This is delete service:delete " + id );
}
}
cglib代理拦截器
public class MyMethodInterceptor implements MethodInterceptor {
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
System.out.println("BEFORE METHOD: "+method);
Object object=methodProxy.invokeSuper(o,objects);
System.out.println("AFTER METHOD: "+method);
return object;
}
}
代理实现及测试
public class TestCglib {
public static void main(String[] args) {
Enhancer enhancer=new Enhancer();
enhancer.setSuperclass(UserServiceImpl.class);
enhancer.setCallback(new MyMethodInterceptor());
UserServiceImpl userService= (UserServiceImpl) enhancer.create();
System.out.println(userService.getClass().getName());
userService.add();
System.out.println(" ");
userService.delete(1);
}
}
本文介绍了一种使用CGLIB实现动态代理的方法。通过创建UserService接口及其实现类UserServiceImpl,演示了如何利用CGLIB的Enhancer类来创建代理对象,并通过MyMethodInterceptor拦截器实现了方法调用前后的增强逻辑。

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



