package com.itheima.aspect; public class MyAspect { public void check_Permissions(){ System.out.println("模拟检查权限..."); } public void log() { // TODO Auto-generated method stub System.out.println("记录日志"); } }
package com.itheima.aspect; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import com.itheima.jdk.UserDao; public class JdkProxy implements InvocationHandler{ private UserDao userDao; public Object createProxy(UserDao userDao){ this.userDao=userDao; ClassLoader classLoader=JdkProxy.class.getClassLoader(); Class[]clazz = userDao.getClass().getInterfaces(); return Proxy.newProxyInstance(classLoader, clazz, this); } @Override public Object invoke(Object proxy,Method method,Object[]args) throws Throwable{ MyAspect myAspect = new MyAspect(); myAspect.check_Permissions(); Object obj = method.invoke(userDao,args); myAspect.log(); return obj; } }
package com.itheima.aspect; import com.itheima.jdk.UserDao; import com.itheima.jdk.UserDaoImpl; public class JdkTest { public static void main(String[] args) { JdkProxy jdkProxy= new JdkProxy(); UserDao userDao = new UserDaoImpl(); UserDao userDao1= (UserDao)jdkProxy.createProxy(userDao); userDao1.addUser(); userDao1.deleteUser(); } }