❀ 通过类加载器进行加载,通过流的方式进行读取,从而获取资源
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();