java 高新技术【6】 反射开发框架以及用 类加载器 管理资源和配置文件
2012-05-31 09:38
896 查看
//第一种方士:【把文件放在 项目名 下 】 尽量 面向父类 和 接口编程 。
InputStream ips = new FileInputStream("config.properties");
第二种 :com/itm/day1/config.properties 用类加载器的方式:
在classpath 那些指定的目录下,逐一的去查找 你要加载的那个文件。 bin是用户的那个路径。
在 classPath的根目录下 逐一的查找。
InputStream ips = ReflectTest2.class.getClassLoader().getResourceAsStream("com/itm/day1/config.properties");
第三种:com/itm/day1/config.properties
InputStream ips = ReflectTest2.class.getResourceAsStream("config.properties");
第四种:com.itm.day1.resource/config.properties
InputStream ips = ReflectTest2.class.getResourceAsStream("resource/config.properties");
[java] view
plaincopyprint?
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Collection;
import java.util.Properties;
public class ReflectTest2 {
/**
*
* 一定要用完整的路径,但完整的路径不是 硬编码。而是计算出来的;。
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//第一种方士:【把文件放在 项目路径下 如:你的java工程名为:test,则放在test下】 尽量 面向父类 和 接口编程 。
InputStream ips = new FileInputStream("config.properties");
/* 第二种 :用类加载器的方式:
在classpath 那些指定的目录下,逐一的去查找 你要加载的那个文件。 bin是用户的那个路径。
在 classPath的根目录下 逐一的查找。
InputStream ips = ReflectTest2.class.getClassLoader().getResourceAsStream("com/itm/day1/config.properties");*/
// 第三种:com/itm/day1/config.properties
// InputStream ips = ReflectTest2.class.getResourceAsStream("config.properties");
// 第四种:com.itm.day1.resource
// InputStream ips = ReflectTest2.class.getResourceAsStream("resource/config.properties");
// Properties 相当于 hashMap,但是 : 可以把自己的内存的键值对 存到 硬盘文件内去、。
//也可以在 初始化的时候,从一个文件 把自己的键值对 加载进来。
Properties props = new Properties();
props.load(ips);
ips.close();// 把操作系统的东西 干掉。
// 拿到 文件的 key值
String className = props.getProperty("className");
Collection collections = (Collection) Class.forName(className).newInstance();
ReflectPoint pt1 = new ReflectPoint(3,3);
ReflectPoint pt2 = new ReflectPoint(5,5);
ReflectPoint pt3 = new ReflectPoint(3,3);
collections.add(pt1);
collections.add(pt2);
collections.add(pt3);
collections.add(pt1);
System.out.println(collections.size());
}
}
[plain] view
plaincopyprint?
className=java.util.HashSet
小结:
1.用IO流的方式读写文件,通常是用绝对路径,但是为了通用性,这个绝对路径通常不要硬编码,而是运算出来的。
2.类加载器在各种框架中普遍应用,无论是直接的加载(如1),还是简化的加载(如2,3,4),它们的本质都是ClassLoader。
3.简化的类加载器可以使用相对路径,也可以使用绝对路径。
有关类加载器的深入探讨:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/
相关文章推荐
- java 高新技术【6】 反射开发框架以及用 类加载器 管理资源和配置文件
- Java高新技术之框架的概念及用反射技术开发框架的原理和配置文件
- Java中框架的概念,以及从配置文件中读取配置信息并加载指定类
- Java中框架的概念,以及从配置文件中读取配置信息并加载指定类
- Java中框架的概念,以及从配置文件中读取配置信息并加载指定类
- java反射,类加载器以及配置文件的结合使用
- Java日志框架-logback配置文件多环境日志配置(开发、测试、生产)(原始解决方法)
- 框架开发原理/类加载器加载配置文件
- java开发框架——配置文件web.xml
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件 .
- Java框架--资源文件配置
- java开源框架应用技巧之spring配置文件中如果有多个.hbm.xml文件的话,无论是项目开发过程中还是维护过程中修改起来都会很麻烦切容易出错
- Portal-Basic Java Web 应用开发框架:应用篇(一) —— 配置文件
- Java的项目(资源或者配置)文件的加载总结
- 资源加载 - 相对路径获取JAVA配置文件
- Java Properties 文件的加载和配置管理
- JAVAWEB开发之mybatis详解(二)——高级映射、查询缓存、mybatis与Spring整合以及懒加载的配置和逆向工程
- 黑马程序员--数组的反射,反射的实现框架实例,配置文件加载
- Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)
- android游戏开发框架libgdx的使用(十八)—资源加载管理AssetManager的使用