UserDao接口
package com.student.jdk;
public interface UserDao {
public void addUser();
public void deleteUser();
}
UserDaoImpl实现接口:
package com.student.jdk;
//作为实体类
public class UserDaoImpl implements UserDao {
@Override
public void addUser() {
System.out.println("添加用户!!");
}
@Override
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("模拟记录日志!!!");
}
}
JDkProxy:代理类
package com.student.jdk;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import com.student.aspect.MyAspect;
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;
}
}
JDKTest:测试类
package com.student.jdk;
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();
}
}
运行结果:
模拟检查权限!!!
添加用户!!
模拟记录日志!!!
模拟检查权限!!!
删除用户!!
模拟记录日志!!!
浙公网安备 33010602011771号