动态代理简单的个人笔记

本文深入解析Java动态代理机制,阐述如何利用Proxy.newProxyInstance动态创建代理对象,实现接口方法的调用处理器(InvocationHandler)。通过示例说明增强内容在invoke方法中的应用,以及动态代理在面向切面编程(AOP)中的作用。
摘要由CSDN通过智能技术生成

动态代理

1.只有一个方法

Object proxyObject =	Proxy.newProxyInstance(ClassLoader,Class[],ivokationHandler);

ClassLoader ->类加载器

它是用来加载类,把.class加载到内存中,形成class对象。

创建对象的过程:

1.加载类
{
    加载.class到内存的方法区 ->要依赖classloader
    执行静态代码块和初始化语句
}
2.执行new 差UN跟腱炎hi个空白对象
3.调用构造器,
4.子类调用父类构造器,
5.构造其执行过程()
{
  执行构造代码块和初始化语句
  构造器内容
}

Class[] ->Interfaces一组要实现的接口

ivokationHandler ->调用处理器

注:ivokationHandler 是一个接口
所以需要new一个对象,内部类实现唯一的方法invoke(Object proxy ,Method method, Object[] args)返回值Object。
这个方法在调用代理对象所实现接口的方法时会被调用。
调用方法时,

proxy是代理对象
  ->当前对象(a传递给proxy),
  -> method是当前被调用的方法,即目标方法(aaa传递给method),
  ->args实参(参数传给args)
增强内容就是在invoke中
invoke返回值对应对象toString返回的值

常规思路

新建一个类实现ivokationHandler接口,有一个成员变量,变量是被增强的对象,invoke方法中调用这个对象需要被增强的方法,在此基础之上进行增强。
之后通过newProxyInstance获得被增强后的对象,调用方法即可。

动态创建实现了所有指定接口的对象

这个对象实现的所有接口中的方法
内容都是调用invokationHandler中的invoke方法
这个对象甚至执行object本身的方法,也会去调用invoke方法
    ****注意,没有加native的方法不会执行invoke
针对动态代理的理解
   在运行时,动态实现一组指定接口的实现类对象
   即 在运行的时候,创建(实现了一组指定接口的)对象

动态代理的作用

最终是学习AOP ->面向切面编成->与装饰者模式有点类似,但是比装饰者模式还要灵活。
补充:OOP的含义,面向对象编成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值