package com.aop.cglib;
public class Test {
public static void main(String[] args) {
UserProxy userProxy = new UserProxy();
UserImpl ui = (UserImpl)userProxy.getProxyObject(UserImpl.class);
ui.saveUser("曹雪坤");
System.out.println("\r\n ######### \r\n");
ui.deleteUser("xxx");
}
}
package com.aop.cglib;
public class UserImpl {
public void saveUser(String username){
System.out.println("保存用户:"+username);
}
public void deleteUser(String username){
System.out.println("删除用户:"+username);
}
public void updateUser(String username){
System.out.println("更新用户:"+username);
}
}
package com.aop.cglib;
import java.lang.reflect.Method;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
public class UserProxy implements MethodInterceptor{
private Enhancer enhancer = new Enhancer();
public Object getProxyObject(Class clz){
enhancer.setSuperclass(clz);
enhancer.setCallback(this);
return enhancer.create();
}
@Override
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
System.out.println("在调用方法之前执行");
Object object = proxy.invokeSuper(obj, args);
System.out.println("在调用方法之后执行");
return object;
}
}