反射、反射流程、应用场景
获取Class的方法
- Class.forname()
- Object.getClass()
- String.Class
反射的应用场景:
1.框架-ioc、aop、注解
2.JDBC连接数据库: 加载数据库的驱动程序
静态代理||动态代理
动态代理的实现方式:
1.JDK
- 重写 InvocationHandler接口中的invoke()方法
- 使用Proxy类的newProxyInstance()方法
2.CGlib - 重写MethodInterceptor接口中的intercept()方法
- 使用Enhancer类的create()方法
最大的区别:CGlib能够实现 接口、普通类中的被代理方法,而jdk只能实现接口中的被代理方法
类加载子系统
类加载机制
全盘负责
缓存机制
双亲委派机制
打破双亲委派机制—tomcat容器
- catalina 私有的
- share 共享的
- webapp
- jsp 热部署