您当前的位置: 首页 > 

梁云亮

暂无认证

  • 3浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

CGLIB动态代理

梁云亮 发布时间:2022-03-10 16:13:13 ,浏览量:3

示例
  • Maven依赖

    cglib
    cglib
    3.3.0


  • 功能类
public class EmpDaoImpl {
	public boolean delete(Integer empno) {
		System.out.println("删除指定编号的员工");
		return false;
	}
}
  • 功能增强
public class LogHandler implements MethodInterceptor {
	private Enhancer enhancer = new Enhancer();

	public Object getProxy(Object clazz) {
		enhancer.setSuperclass(clazz.getClass());
		enhancer.setCallback(this);
		return enhancer.create();
	}

	@Override
	public Object intercept(Object obj, Method method, 
			Object[] args, MethodProxy proxy) throws Throwable {
		System.out.println("前置代理");
		Object res = proxy.invokeSuper(obj, args);
		System.out.println("后置代理");
		return res;
	}

}
  • 测试代码
public static void main(String[] args) {
	LogHandler hander = new LogHandler();
	EmpDaoImpl proxy =  (EmpDaoImpl) hander.getProxy(new EmpDaoImpl());
	proxy.delete(3);
}

结果: 在这里插入图片描述

注意

在JDK11(包含)之上的环境中运行本程序会报如下图所示的错误: 在这里插入图片描述

要想正确运行,需要做如下配置:

Eclipse

在这里插入图片描述 然后在VM中添加内容:--add-opens java.base/java.lang=ALL-UNNAMED 在这里插入图片描述

Intellij

请添加图片描述

关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0408s