refer
refer
refer
模板
package cn.cx.jdk;
public interface UserDao {
public void addUser();
public void deleteUser();
}
package cn.cx.jdk;
import org.springframework.stereotype.Repository;
@Repository("userDao")
public class UserDaoImpl_cx implements UserDao {
public void addUser() {
System.out.println("添加用户");
}
public void deleteUser(){
System.out.println("删除用户");
}
}
package cn.cx.jdk;
import cn.cx.aspect.MyAspect;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
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 myAspecy = new MyAspect();
myAspecy.check_permissions();
Object obj = method.invoke(userDao,args);
myAspecy.log();
return obj;
}
}
package cn.cx.jdk;
public class JdkTest {
public static void main(String[] args) {
UserDao userDao = new UserDaoImpl_cx();
JdkProxy jdkProxy = new JdkProxy();
UserDao userDao1= (UserDao) jdkProxy.createProxy(userDao);
userDao1.addUser();
userDao1.deleteUser();
}
}
package cn.cx.aspect;
public class MyAspect {
public void check_permissions(){
System.out.println("模拟检查权限..._cx");
}
public void log(){
System.out.println("模拟记录日志..._cx");
}
}