Mybatis原理分析之七:资源加载
2015-12-17 17:56
337 查看
包结构
![](https://img-blog.csdn.net/20151216190044721?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
本包主要包含了资源加载和访问相关的类。
一 VFS类介绍
作用:
提供了2个实现 JBoss6VFS 和 DefaultVFS,并提供了用户扩展点,可定义VFS实现
加载顺序: 自定义VFS实现 > 默认VFS实现 取第一个加载成功的
添加用户VFS实现
二 ClassLoaderWrapper
封装了5个类加载器,getClassLoaders方法
类加载器查找资源
本包主要包含了资源加载和访问相关的类。
一 VFS类介绍
作用:
虚拟文件系统(VFS),用来读取服务器里的资源
提供了2个实现 JBoss6VFS 和 DefaultVFS,并提供了用户扩展点,可定义VFS实现
加载顺序: 自定义VFS实现 > 默认VFS实现 取第一个加载成功的
添加用户VFS实现
public static void addImplClass(Class<? extends VFS> clazz) { if (clazz != null) { USER_IMPLEMENTATIONS.add(clazz); } }
二 ClassLoaderWrapper
封装了5个类加载器,getClassLoaders方法
//一共5个类加载器 ClassLoader[] getClassLoaders(ClassLoader classLoader) { return new ClassLoader[]{ classLoader, defaultClassLoader, Thread.currentThread().getContextClassLoader(), getClass().getClassLoader(), systemClassLoader}; }
类加载器查找资源
/* * Get a resource as a URL using the current class path * 用5个类加载器一个个查找资源,只要其中任何一个找到,就返回 * * @param resource - the resource to locate * @param classLoader - the class loaders to examine * @return the resource or null */ URL getResourceAsURL(String resource, ClassLoader[] classLoader) { URL url; for (ClassLoader cl : classLoader) { if (null != cl) { // look for the resource as passed in... url = cl.getResource(resource); // ...but some class loaders want this leading "/", so we'll add it // and try again if we didn't find the resource if (null == url) { url = cl.getResource("/" + resource); } // "It's always in the last place I look for it!" // ... because only an idiot would keep looking for it after finding it, so stop looking already. if (null != url) { return url; } } } // didn't find it anywhere. return null; }
相关文章推荐
- IT公司100题-16-层遍历二元树
- 广点通sdk接入 _应用墙广告
- 直接修改别人jar包里面的class文件 工具:jclasslib
- Android学习(三)
- 03、3分钟教你搞定这该死的Delegate!代理与协议委托的深度理解
- JavaScript 文章备注
- linux 免用户密码登录
- 学习CRYPTO第二天
- View hierarchy-视图层次
- 工作环境搭建(8) - CentOS7命令行安装Android SDK
- jQuery学习笔记(一)
- 安装成功的nginx如何添加未编译安装模块
- ggplo2学习笔记——基本图形类型
- 10-动画组
- C3P0数据库连接池相关配置
- win7桌面ie删不掉
- Objective-c语言_NSData(不可变数据)和NSMutableData(可变数据)
- Python中的Numpy、SciPy、MatPlotLib安装与配置
- oc 学习习题答案
- java 动态编译 方法内联