动态代理
1、动态代理
Request中的方法的增强
1、继承 :能够控制这个类的构造
2、装饰者 :增强的类和被增强的类实现相同的接口,增强的类中获得被增强的类的引用
缺点:接口中方法过多,只增强其中的某个方法,其他的方法也需要重写
3、动态代理 :被增强的类实现了接口
1.1、代理的概述
1.1.1、概述:
1.1.2、JDK中动态代理 :Proxy对象.
Proxy.newProxyInstance(ClassLoader cl,Class[] interfaces,InvocationHandler ih);
注意:使用动态代理只能用Proxy对象以及newProxuInstance的方法
参数为:ClassLoader :被装饰对象的类的加载器
(通常为:对象.getClass().getClassLoader())
Class[] :被增强的对象实现的所有接口
通常为:对象.getClass().getInterfaces()
InvocationHandler :处理类。
InvocationHandler
2、动态代理在企业中的应用
2.1、Spring的AOP
AOP的底层使用的就是代理机制:
AOP :面向切面编程.新的思想,用来解决OOP中遇到的一些问题!!!
3、类加载器
3.1、概念
类的加载器:将Class文件加载到JVM中执行这个文件
3.2、分类
3.2.1、引导类加载器:
JAVA_HOME/jre/lib/rt.jar
3.2.2、扩展类加载器
JAVA_HOME/jre/ext/*.jar
3.2.3、应用类加载器
加载类路径下的所有的class
为了保证类只会加载一次而且不重复加载,类加载器采用全盘委托机制:
例如:
class A {
String a;
}
由应用类加载器得到A.class String,class,委托给扩展类加载器,扩展类加载器又委托给引导类加载器.引导类加载器加载String.class.将其他的类的class向下给扩展类加载器.扩展类加载器没有找到.向下给应用类加载器,将A.class 加载.
|
|