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

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

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

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();
目录
相关文章
分享82个Html经典模板,总有一款适合您
分享82个Html经典模板,总有一款适合您
227 0
|
人工智能 算法
AIGC是否属于作品
【1月更文挑战第17天】AIGC是否属于作品
275 4
AIGC是否属于作品
|
8月前
|
JavaScript
Pinia 与 Vuex 4 相比有哪些优缺点?
Pinia 与 Vuex 4 相比有哪些优缺点?
418 57
|
机器学习/深度学习 自然语言处理 算法框架/工具
深度学习中的正则化技术:从理论到实践
【10月更文挑战第5天】本文将探讨深度学习模型中不可或缺的一环——正则化技术。通过深入浅出的方式,我们将了解正则化在防止过拟合中的作用,并揭示其在模型性能提升中的关键角色。文章不仅涉及理论知识,还结合代码示例,帮助读者从实践中掌握这一技术的应用。
|
算法 安全
【 第八章】软件设计师 之 计算机软件法律法规
软件设计师 之 计算机软件法律法规备考资料
【 第八章】软件设计师 之 计算机软件法律法规
|
SQL 关系型数据库 MySQL
【错误】mysql 出现 “1067 - Invalid default value for ‘UPDATE_TIME‘ “ 错误提示的解决办法
【错误】mysql 出现 “1067 - Invalid default value for ‘UPDATE_TIME‘ “ 错误提示的解决办法
829 1
|
Linux 数据安全/隐私保护 iOS开发
【Linux】4、Linux 的用户、用户组和权限等
【Linux】4、Linux 的用户、用户组和权限等
182 0
|
安全 关系型数据库 测试技术
【安装】Windows下Oracle安装图解----oracle-win-64-11g 详细安装步骤
【安装】Windows下Oracle安装图解----oracle-win-64-11g 详细安装步骤 一、 Oracle 下载   官方下地址 http://www.
1753 0
|
编解码 Java 应用服务中间件
jsp乱码问题的解决(引的)
这是我搜索到的。作者总结的很好。   1、 最基本的乱码问题。这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导致的乱码。中文问题我是个好人三个地方的编码。第一个地方的编码格式为jsp文件的存储格式。
987 0