Spring笔记(1)-----Spring资源访问
来源:互联网 发布:电子相册软件app排行榜 编辑:程序博客网 时间:2024/06/05 09:24
(1) 资源抽象接口
JDK所提供的访问资源的类并不能很好的满足各种底层资源的访问需求,比如缺少从类路径或Web容器上下文中获取资源的操作类。
而Spring 提供的资源访问类非常全,而且可以脱离框架使用。
它设计了一个Resource接口,该接口拥有对应不同资源的实现类:
看一下它的具体实现类:
1)ByteArrayResource:二进制数组表示的资源,二进制数组资源可以再内存中通过程序构造。
2)ClassPathResource:类路径下的资源,资源以相对于类路径的方式,如下:
public class Test {public static void main(String[] args) {String filePath = "D:/testSpace/springtest/target/classes/applicationContext.xml";Resource res1 = new FileSystemResource(filePath);Resource res2 = new ClassPathResource("/applicationContext.xml");System.out.println(res1.getFilename());System.out.println(res2.getFilename());}}3)FileSystemResource:文件系统资源,资源以文件系统路径的方式表示,如:D:/config/beans.xml
4)InputStreamResource:对应一个InputStream的资源
5)ServletContextResource:为访问web容器上下文中的资源而设计的类,负责以相对于Web应用根目录的路径加载资源。
6)UrlResource:封装了java.net.URL,它使用户能够访问任何可以通过URL访问的资源
有了这些资源类以后,我们就可以将Spring的配置信息放在任何地方,通过Resource接口获取资源,然后用户就可以通过Resource接口定义的多个方法访问文件的数据和其他信息。例如:getFileName()获取文件名,getInputStream获取文件的输入流。
注:资源加载时默认使用系统编码,如果资源文件采用特殊的编码方式,那么可以通过EncodedResource对资源进行编码,以保障资源内容操作的正确性。
(2) 资源加载
Spring提供了不显式使用Resource实现类的情况下,仅通过资源地址的特殊标示就可以加载相应的资源,它提供的加载机制不但能够通过“classpath:”,"file:"等资源地址前缀识别不同的资源类型,还支持Ant风格带通配符的资源地址。
地址前缀示例对应资源类型classpath:classpath:com/test/beans.xml从类路径中加载资源file:file:/confi/com//test/beans.xml 使用UrlResource从文件系统目录中加载资源,可采用绝对或相对路径http://http://www.test.com/resource/beans.xml使用UrlResouce从Web服务器中装载资源ftp://ftp://www.test.com/resource/beans.xml使用UrlResource从FTP服务器中加载资源没有前缀com/test/beans.xml根据ApplicationContext具体实现类采用对应类型的Resource注:classpath:和classpath*:前缀区别:
假设多个jar包或文件系统类路径都拥有一个相同的包名。classpath:只会在第一个加载的包下找对应的文件,而classpath*:回扫描所有这些jar包。
Ant风格资源地址支持3种匹配符:
?:匹配文件名中的一个字符,如classpath:com/t?st.xml 可以匹配类路径下com/test.xml或com/tast.xml
*:匹配文件名中任意个字符,如:file:/D:/conf/*.xml匹配D:/conf下的所有xml后缀的文件
**:匹配多层路径:如classpath:com/**/test.xml匹配com类路径下的test.xml
资源加载器:
Spring定义了一套资源加载的接口,并提供了实现类:
ResourceLoader:该接口仅提供了一个getResource(String location)方法,可以根据一个资源地址加载资源文件,不过资源地址仅支持带资源类型前缀的表达式,不支持Ant风格的资源类型表达式。
ResourcePatternResolver:扩展了ResourceLoader接口,定义了一个新的接口方法:getResources(String locationPattern),该方法支持带资源类型前缀和Ant风格的资源路径的表达式。
PathMatchingResourcePatternResolver是Spring提供的标准实现类,例如:
public class Test1 {public static void main(String[] args) {ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();try {Resource[] resources = resolver.getResources("classpath*:applicationContext.xml");for(Resource res:resources){System.out.println(res.getDescription());}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
- Spring笔记(1)-----Spring资源访问
- Spring中的资源访问
- Spring的资源访问
- Spring资源访问
- Spring之资源访问
- 九、Spring资源访问
- Spring资源访问机制
- Spring 资源访问利器
- Spring资源访问器
- Spring-----15、资源访问
- Spring 资源访问
- Spring静态资源访问
- Spring -- 资源访问(二)
- 5.2. Spring访问资源
- spring 静态资源访问
- spring资源访问
- Spring的资源访问
- spring中的资源访问
- 关于iCloud的使用
- poj1742
- Hibernate笔记(3)
- ORACLE 分组和时间函数
- 搭建Nginx+Java环境(详细)
- Spring笔记(1)-----Spring资源访问
- 判断单链是否循环,并且找出第一个循环节点
- main函数在c语言中演变
- JAVA 获取cmd输出内容到控制台
- ORACLE 著名函数之单值函数
- 10-0. 说反话 (20)
- 7.30个人排位赛08赛后题解
- ubuntu下不需要翻墙来安装android sdk
- FTP程序预备知识