加载、读取资源的方式(底层都是以流的方式获取资源,具体是通过类加载器进行加载,通过流的方式进行读取,从而获取资源)

简介: 加载、读取资源的方式(底层都是以流的方式获取资源,具体是通过类加载器进行加载,通过流的方式进行读取,从而获取资源)

❀ 通过类加载器进行加载,通过流的方式进行读取,从而获取资源

1、java的jdk内置的加载方式:

  • 通过线程Thread(lang包的)获取到类加载,然后以流的方式获取资源:
InputStream inputStream  = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
/* 【使用输入流inputStream】 */
private static Properties p = new Properties();
  //加载注册
static {
  try {
    InputStream inStream = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("db.properties");
    p.load(inStream);
    Class.forName(p.getProperty("driverClassName"));//获取driverClassName的值
  } catch (Exception e) {
    e.printStackTrace();
  }
}


2、mybatis的的加载方式(通过):

  • 通过资源对象Resources(import org.apache.ibatis.io.Resources;)以流的方式获取资源:
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
/* 【使用输入流inputStream】 */
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//创建SqlSessoinFactory会话工厂对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession();
//进行数据库操作(CRUD)
User user = session.selectOne("com.shan.hello.UserMapper.get", 2L);
System.out.println(user);
//5、关闭资源
session.close();


2、spring的的加载方式【加载完资源赋值给Resource对象】:

  • 通过classpathResource对象加载资源【classpath是加载字节码(即到项目编译之后的字节码的目录下加载资源)】
Resource resource = new ClassPathResource("applicationContext.xml");
/* 【使用资源对象Resource】 */
Hello hello = null;
//===================================================================
Resource resource = new ClassPathResource("applicationContext.xml");
//创建spring的工厂对象(IoC容器对象)
BeanFactory factory = new XmlBeanFactory(resource);
//从spring IoC 容器(就是factory 工厂对象)中获取指定名称的对象
hello = (Hello)factory.getBean("hello");
//===================================================================
hello.printUsername();
目录
相关文章
|
29天前
|
缓存 监控 算法
如何确保延迟加载的资源能够在需要时及时加载?
【10月更文挑战第14天】保障延迟加载资源的及时加载是一个复杂而持续的过程,需要我们不断地探索和实践。通过合理的设计、优化和管理,我们能够为用户提供更流畅、高效的体验,同时也能更好地发挥资源的价值。
33 2
|
1月前
|
监控 开发者
确保动态导入模块按正确顺序加载
【10月更文挑战第12天】 在复杂应用开发中,确保动态导入模块按正确顺序加载至关重要,直接影响应用性能、功能和稳定性。本文深入探讨了动态模块加载顺序的影响因素、解决方案及实践案例,提供了详细的策略和方法,帮助开发者有效管理模块加载顺序,提升应用质量。
|
3月前
|
数据库连接 数据库
实现加载驱动、得到数据库对象、关闭资源的代码复用,将代码提取到相应的工具包里边。优化程序
该博客文章展示了如何通过创建工具类`Connectiontools`实现数据库连接、语句执行以及资源关闭的代码复用,以优化程序并提高数据库操作的效率和安全性。
|
Java 数据库连接 API
流程定义资源文件下载
流程定义资源文件下载
|
JSON 算法 Java
项目中不同位置资源文件读取的几种方式
项目中不同位置资源文件读取的几种方式
53 0
定义一个事件需要单独新建一个文件吗?底层原理是什么?
定义一个事件需要单独新建一个文件吗?底层原理是什么?
|
JSON 缓存 前端开发
【并发技术系列】「Web请求读取系列」如何构建一个可重复读取的Request的流机制
【并发技术系列】「Web请求读取系列」如何构建一个可重复读取的Request的流机制
254 0
【并发技术系列】「Web请求读取系列」如何构建一个可重复读取的Request的流机制
|
Java Spring 容器
开发20年,你可知道SpringWeb接口资源是如何保存起来的?
我们在浏览器上只输入了一个URL地址,怎么就能访问到这个接口的呢?于是乎就引出了 今天我们要讨论的话题。Spring中的Web接口资源是如何保存起来的?
246 0
|
缓存
读源码长知识 | 动态扩展类并绑定生命周期的新方式
在阅读viewModelScope源码时,发现了一种新的方式。 协程需隶属于某 CoroutineScope ,以实现structured-concurrency,而 CoroutineScope 应
172 0
|
Java Linux
封装一个根据路径获取文件资源的工具类
通常我们最多的场景是从本地资源中读取文件,这个时候我们经常需要注意的是相对路径、绝对路径问题; 除了从本地获取文件之外,从网络中获取文件资源(如图片)也属于相对常见的场景,接下来我们封装一个工具类,可以支持以上各种类型的数据读取
136 0
封装一个根据路径获取文件资源的工具类