aop编程基石java动态代理

一、静态代理的问题

违反了开闭原则,每代理一个接口,就要修改代理类


二、动态代理的原理

1、对象的生命周期

java文件 ——>字节码文件——>class 对象——>生成对象——>销毁

2、动态代理的过程

Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(), new Class[] { Foo.class }, handler);

不通过java文件,自己生成字节码,然后生成class对象,最后生成代理对象

生成字节码时,已经继承了Proxy父类,实现了要代理的接口;

生成class对象,用到了classloader和字节码

生成代理对象时,把用来增强的处理类InvocationHandler传入

你可能感兴趣的:(aop编程基石java动态代理)