用Resources类为从类路径中加载资源
Resources(com.ibatis.common.resource.*)
Resources类为从类路径中加载资源,提供了易于使用的方法。处理ClassLoader是一项富于挑战的工作,尤其是应用服务器/容器的情况下。Resources类试图简化这些工作。
Resources类常用于以下几种情况:
1.0 从类路径加载SQL Map配置文件(如sqlMap-config.xml)。
2.0 从类路径加载DAO Manager配置文件(如dao.xml)。
3.0 从类路径加载各种.properties文件。
加载一个资源有很多方式,包括:
1.0 对于简单的只读文本数据,加载为Reader。
2.0 对于简单的只读二进制或文本数据,加载为Stream。
3.0 对于可读写的二进制或文本文件,加载为File。
4.0 对于只读的配置属性文件,加载为Properties。
5.0 对于只读的通用资源,加载为URL。
按以上的顺序,Resources类加载资源的方法如下:
Reader getResourceAsReader(String resource);
Stream getResourceAsStream(String resource);
File getResourceAsFile(String resource);
Properties getResourceAsProperties(String resource);
Url getResourceAsUrl(String resource);
在以上每个方法中,加载资源和加载Resources类的为同一个ClassLoader,或者,如果失败,将使用系统的ClassLoader。在某些环境下(比如某些应用服务器),ClassLoader可能是个麻烦事,您可以指定所使用的ClassLoader(比如使用加载应用的ClassLoader)。上面每个方法都有相应把ClassLoader作为参数的方法。它们是:
Reader getResourceAsReader (ClassLoader classLoader, String resource);
Stream getResourceAsStream (ClassLoader classLoader, String resource);
File getResourceAsFile (ClassLoader classLoader, String resource);
Properties getResourceAsProperties (ClassLoader classLoader, String resource);
Url getResourceAsUrl (ClassLoader classLoader, String resource);
以上方法的resource参数名称应该是全限定名,加上全文件/资源名。例如,如果在类路径中有资源“com.domain.mypackage.MyPropertiesFile.properties”,您使用下面的代码加载
资源为Properties(注意,资源名前面不需要斜杠/)。
String resource = “com/domain/mypackage/MyPropertiesFile.properties”;
Properties props = Resources.getResourceAsProperties (resource);
同样地,您可以从类路径加载SQL Map配置文件为一个Reader。假设它在类路径的properties目录下(properties.sqlMap-config.xml)。
String resource = “properties/sqlMap-config.xml”;
Reader reader = Resources.getResourceAsReader(resource);
SqlMapClient sqlMap = XmlSqlMapBuilder.buildSqlMap(reader);
文章出处:DIY部落(http://www.diybl.com/course/1_web/webjs/200877/131910.html)