spring-AOP动态代理

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();
	}
}

  

猜你喜欢

转载自www.cnblogs.com/zhizhiyin/p/10813198.html