飞行的猪哼哼

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

UserDao :实体类

package com.student.cglib;

public class UserDao {
	public void addUser() {
		System.out.println("添加用户!!!!!");
	}
	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("模拟记录日志!!!");
	}

}

CglibProxy :动态代理类

package com.student.cglib;

import java.lang.reflect.Method;

import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;

import com.student.aspect.MyAspect;

public class CglibProxy implements MethodInterceptor {
	
	public Object createProxy(Object target) {
		Enhancer enhancer = new Enhancer();
		enhancer.setSuperclass(target.getClass());
		enhancer.setCallback(this);
		return enhancer.create();
	}

	@Override
	public Object intercept(Object proxy, Method metod, Object[] args, MethodProxy methodProxy) throws Throwable {
		MyAspect myAspect = new  MyAspect();
		myAspect.check_Permissions();
		Object obj = methodProxy.invokeSuper(proxy, args);
		myAspect.log();
		return obj;
	}

}

CglibTest:测试类

package com.student.cglib;

public class CglibTest {

	public static void main(String[] args) {
		CglibProxy cglibProxy = new CglibProxy();
		UserDao userDao = new UserDao();
		UserDao userDao1 = (UserDao) cglibProxy.createProxy(userDao);
		userDao1.addUser();
		userDao1.deleteUser();
	}

}

输出结果:

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

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