---------------------- android培训、java培训、期待与您交流! ----------------------
类加载器:
Java虚拟机中可以安装多个类加载器,系统默认三个主要的类加载器,每个类负责加载特定位置的类:
BootStrap:jre/lib/rt.jar
ExtClassLoader:jre/lib/ext/*.jar
AppClassLoader:classPath指定的所有jar 或目录
类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是java类,这就是BootStrap.
Java虚拟机中的所有类装载器采用具有父子关系的树形结构进行组织,在实例化每个类装载器对象时,需要为其指定一个父级类装载器对象或者默认采用系统类装载器为其父级类加载。
自定义的类加载器必须继承ClassLoader
有包名的类不能调用无包名的类。
ClassLoader.loadClass()方法来指定某个类加载器去加载某个类。
当每个类加载器在加载类时,先委托给上级去加载这个类,这就是类加载器的委托机制。
自定义一个类加载器对一个class文件进行加密,在解密的时候只能调用自定义的这个类加载器
代理:
JVM可以在运行期间动态生成出类的字节码,这种动态生成的类往往被用作代理类, 即动态代理。JVM生成的动态类必须实现一个或多个接口,所以,JVM生成的动态类只能用作具有相同接口的目标类的工代理。
CGLIB库可以动态生成一个类的子类,一个类的子类也可以用作该类的代理,所以,如果要为一个没有实现接口的类生成动态代理就可以使用CGLIB库
代理类的各个方法中通常除了要调用目标的相应方法和对外返回目标返回的结果外,还可以在代理方法中的如下四个位置加上系统功能代码:
1、在调用目标方法之前
2、在调用目标方法之后
3、在调用目标方法前后
4、在处理目标方法异常的catch块中
AOP:
工厂类BeanFactory负责创建目标类或代理类的实例对象,并通过配置文件实现切换。其getBean方法根据参数字符串返回一个相应的实例对象,如果参数字符串在配置文件中对应的类名不是ProxyFactoryBean,则直接返回该类的实例对象,否则,返回该类实例对象的getProxy方法返回的对象。
---------------------- android培训、java培训、期待与您交流! ----------------------
分享到:
相关推荐
内容概要:通过带着读者手写简化版 Spring 框架了解 Spring 核心原理。在手写Spring源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程保留核心功能, ...本代码基于黑马程序员的课程,最好根据课程同步学习
aop java
用Java动态代理实现AOP,讲的很好(用Java动态代理实现AOP)
用java自己实现的动态代理,实现AOP功能
java-用Java动态代理实现AOP.pdf
利用java中的反射机制以及代理机制,实现了AOP。有详细的代码和实例
讲述JAVA的动态代理的原理,以及通过JAVA的动态代理来实现AOP。简洁,易懂,学习AOP的入门级文档
主要对Spring AOP的相关概念和简单的静态代理、动态代理以及常见的几种AOP配置方式做总结学习。主要包括:1. AOP的常见概念 2. 静态代理 3. jdk动态代理 4. Aspectj and Aspectjweaver 5. **aop-config** 6. CGLIB ...
博文链接:https://mini-laoshu.iteye.com/blog/200194
动态代理 实现简单分页 spring aop 实现简单分页
本文详细介绍了Java编程中使用动态代理实现AOP功能,AOP是OOP的延续,意思是面向切面编程。 从这篇文章可以大体理解spring AOP的原理。