vlambda博客
学习文章列表

类加载,反射,代理,二叉树

GC条件:

1.该类的所有实例都已经被回收,也就是java堆中不存在该类的任何实例。

2.该类的ClassLoader已经被回收。

3.该类对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射获取该类的方法。

Speingmvc的核心类:

DispatcherServlet,前置控制器

HandlerMapping接口,处理请求的映射

HandlerAdapter接口,处理请求的映射

ModelAndView类。

类的加载是指将类的.class文件中的二进制数据读入内存中,并对数据进行验证,准备,解析,初始化,将其转化为方法区的运行时的数据结构。

加载,验证,准备,解析,初始化。

Java反射是可以让我们在运行时,通过一个类的Class对象来获取类的方法,属性,接口,父类等信息。

动态代理步骤:

根据需要实现的接口信息,在代码中动态创建Proxy类的字节码,创建InvocationHandle实例handler,用来处理Proxy所有方法调用

1.通过java.lang.reflect.Proxy类来动态生成代理类

2.代理类要实现InvocationHandler接口

3.JDK代理只能基于接口进行动态代理

Cglib底层采用ASM字节码生成框架,使用字节码技术生成代理类,对制定的业务类创建子类,并在子类中采用方法拦截技术拦截所有对父类方法的调用,并顺势加入横切逻辑。