博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中资源的加载方法
阅读量:7108 次
发布时间:2019-06-28

本文共 1188 字,大约阅读时间需要 3 分钟。

  hot3.png

一、一切资源的加载都是通过类加载器完成的,通过以下几个方法实现

        1、URL getResource(String name) 委托模式,先委托父类加载器加载,如果加载不到,在调用自己的findResource()方法加载

        2、InputStream getResourceAsStream(String name) 其实是调用 1 方法而已

        3、URL findResource(String name)  类加载器自己需要实现的方法

      

二、加载资源的具体方法

        1、通过Class 对象进行资源加载,使用如下两个方法

            java.net.URL getResource(String name) 

            InputStream getResourceAsStream(String name) 

           它会通过本类的类加载器加载来资源(其实还是使用类加载器来加载资源)。

            这些方法会先对资源名进行解析处理,处理方法如下:

            (1)如果name 以 / 开头,则资源文件名为 / 后面部分

            (2)如果不以 / 开头,则资源文件名为  当前类的包名/name,包名中的 . 用 / 替换   

         如:加载 类路径下的 config.properties 文件

                URL url = PropertiesFilesUtils.class.getResource("/config.properties");

               加载 类路径下 org.apache.ibatis 这个包

               URL  url = PropertiesFilesUtils.class.getResource("/org/apache/ibatis");

               或者 PropertiesFilesUtils.class.getClassLoader().getResource("org/apache/ibatis"); //注意和上一个的不同

         2、通过类加载器来加载资源

              URL getResource(String name) 

              InputStream getResourceAsStream(String name)

              Enumeration<URL> getResources(String name)

              他们会根据各自类加载器的实现不同,分别从不同的地方来加载资源,所有的name 都是相对于自己的加载路径

三、jvm中的类加载器

      jvm默认有三个类加载器

      AppClassLoader(System类加载器) 加载CLASSPATH路径下的包和类

  ExtClassLoader 加载/jre/lib/ext/目录下的扩展包

  BootstrapClassLoader 加载jre/目录下的核心库

      我们自定义的类加载器,默认的的父类加载器是AppClassLoader 

 

转载于:https://my.oschina.net/xiangtao/blog/292454

你可能感兴趣的文章
python 利用pexpect进行多机远程命令执行
查看>>
Python学习系列 (第一章):Python 的简介
查看>>
【转载】addShutdownHook的用处
查看>>
CSS3学习3----举例
查看>>
一个可以检测网络内主机类型的脚本
查看>>
利用Zabbix监控Lync的实时在线人数
查看>>
使用strace+pstack利器分析程序性能
查看>>
类和对象、实例的关系理解
查看>>
Nginx 负载均衡
查看>>
学习日志---非递归二叉树游标遍历(前中后层序)
查看>>
数据库同步自动断开问题的处理
查看>>
错误页定义方法
查看>>
Guid.NewGuid() 和 new Guid()的区别
查看>>
我的友情链接
查看>>
vim技巧
查看>>
DotNetTextBox V3.0 所见即所得编辑器控件 For Asp.Net2.0(ver 3.1.2Beta)
查看>>
mysql-5.6.25-linux-glibc2.5-i686.tar.gz错误
查看>>
nginx 服务并发过10万的linux内核优化配置
查看>>
Oracle数据库体系架构概要
查看>>
extjs4视频学习笔记2
查看>>