UserDao :实体类
package com.student.cglib;
public class UserDao {
public void addUser() {
System.out.println("添加用户!!!!!");
}
public void deleteUser() {
System.out.println("删除用户!!!!!");
}
}
MyAspect :切面类
package com.student.aspect;
//作为切面类
public class MyAspect {
public void check_Permissions() {
System.out.println("模拟检查权限!!!");
}
public void log() {
System.out.println("模拟记录日志!!!");
}
}
CglibProxy :动态代理类
package com.student.cglib;
import java.lang.reflect.Method;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import com.student.aspect.MyAspect;
public class CglibProxy implements MethodInterceptor {
public Object createProxy(Object target) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(target.getClass());
enhancer.setCallback(this);
return enhancer.create();
}
@Override
public Object intercept(Object proxy, Method metod, Object[] args, MethodProxy methodProxy) throws Throwable {
MyAspect myAspect = new MyAspect();
myAspect.check_Permissions();
Object obj = methodProxy.invokeSuper(proxy, args);
myAspect.log();
return obj;
}
}
CglibTest:测试类
package com.student.cglib;
public class CglibTest {
public static void main(String[] args) {
CglibProxy cglibProxy = new CglibProxy();
UserDao userDao = new UserDao();
UserDao userDao1 = (UserDao) cglibProxy.createProxy(userDao);
userDao1.addUser();
userDao1.deleteUser();
}
}
输出结果:
模拟检查权限!!!
添加用户!!!!!
模拟记录日志!!!
模拟检查权限!!!
删除用户!!!!!
模拟记录日志!!!
浙公网安备 33010602011771号