飞行的猪哼哼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

运行结果:

模拟检查权限!!!
添加用户!!
模拟记录日志!!!
模拟检查权限!!!
删除用户!!
模拟记录日志!!!

posted on 2019-10-15 20:28  飞行的猪哼哼  阅读(13)  评论(0)    收藏  举报