3.2.6.7. Resources
Resources
接口根据以下规则管理资源的加载:
如果提供的位置是 URL,则通过该 URL 下载资源;
如果提供的位置以
classpath:
前缀开头,则从类路径(classpath)加载资源;如果该位置不是 URL 并且它不以
classpath:
开头,那么:使用提供的位置作为相对路径,在应用程序的 配置文件目录 中搜索该文件。如果找到该文件,则从中下载资源;
如果在前面的步骤中找不到资源,则从类路径(classpath)下载。
实际上,很少使用显式的 URL 标识或 classpath:
前缀,因此通常可以通过配置文件目录或类路径下载资源。配置文件目录中的资源会覆盖类路径下相同名称的资源,即配置文件目录下的资源的优先级更高。
Resources
接口的方法:
getResourceAsStream()
– 返回指定资源的InputStream
,如果找不到资源则返回null
。应该在使用后关闭流,例如:@Inject
protected Resources resources;
...
InputStream stream = null;
try {
stream = resources.getResourceAsStream(resourceLocation);
...
} finally {
IOUtils.closeQuietly(stream);
}
也可以使用 “try with resources” 的编码方式:
try (InputStream stream = resources.getResourceAsStream(resourceLocation)) {
...
}
getResourceAsString()
– 则以字符串形式返回所指定的资源内容,如果没有找到资源,返回null
。