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

Posted 一乐乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加载读取资源的方式(底层都是以流的方式获取资源,具体是通过类加载器进行加载,通过流的方式进行读取,从而获取资源)相关的知识,希望对你有一定的参考价值。


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

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();

以上是关于加载读取资源的方式(底层都是以流的方式获取资源,具体是通过类加载器进行加载,通过流的方式进行读取,从而获取资源)的主要内容,如果未能解决你的问题,请参考以下文章

Spring之ResourceLoader加载资源

关于ervletContext文件路径加载的问题--学习笔记

JavaWeb读取资源文件的四种方式

微信小游戏开发之CocosCreator资源加载方式

小谈——读取web资源文件的方式和路径问题

Egret之版本控制