spring的配置有哪些(资源访问利器Resouce接口详解)
spring的配置有哪些(资源访问利器Resouce接口详解)应的File对象。4、File getFileO throws IOException:如果底层资源对应一个文件 则该方法返回对2、boolean isOpen:资源是否打开。3、URL getURLO throws IOException:如果底层资源可以表示成URL 则该方法返回对应的URL对象。
Spring设计了一个 Resource接口 它为应用提供了更强的底层资源访问能力。
该接口拥有对应不同资源类型的实现类。
Resource接口的主要方法。
1、boolean exists:资源是否存在。
2、boolean isOpen:资源是否打开。
3、URL getURLO throws IOException:如果底层资源可以表示成URL 则该方法返
回对应的URL对象。
4、File getFileO throws IOException:如果底层资源对应一个文件 则该方法返回对
应的File对象。
5、InputStream getInputStream() throws IOException:返回资源对应的输入流
Resource在 Spring框架中起着不可或缺的作用 Spring框架使用 Resource装载各种
资源 包括配置文件资源、国际化属性文件资源等。
Resource的具体实现类6、WritableResource:可写资源接口 是 Spring3.1版本新加的接口 有两个实现
类 即 FileSystemResource和 PathResource 其中 PathResource是 Spring40提
供的实现类。
7、Byte Array Resource:二进制数组表示的资源 二进制数组资源可以在内存中通
过程序构造。
8、ClassPath Resource:类路径下的资源 资源以相对于类路径的方式表示
9、FileSystemResource:文件系统资源 资源以文件系统路径的方式表示
如:D:/conf/bean.xm等。
10、InputStreamResource:以输入流返回表示的资源。
11、ServletContextResource:为访问Web容器上下文中的资源而设计的类 负责以
相对于web应用根目录的路径加载资源。它支持以流和URL的方式访问 在WAR解包的情况下 也可以通过File方式访问。该类还可以直接从JAR包中访问资源。
12、UrlResource:URL封装了 java.net.URL 它使用户能够访问任何可以通过URL
表示的资源 如文件系统的资源、HTTP资源、FTP资源等。
13、PathResource:: Spring4.0提供的读取资源文件的新类。Path封装了 java.net. URL
Java nio. file Path(Java7.0提供)、文件系统资源 它使用户能够访问任何可以
通过URL、Path、系统文件路径表示的资源 如文件系统的资源、HTTP资源
FTP资源等
有了这个抽象的资源类后 就可以将 Spring的配置信息放置在任何地方(如数据库
LDAP中) 只要最终可以通过 Resource接口返回配置信息即可。
假设有一个文件位于Web应用的类路径下 用户可以通过以下方式对这个文件资
源进行访问:
1、通过 FileSystemResource以文件系统绝对路径的方式进行访问。
2、通过 ClassPathResource以类路径的方式进行访问。
3、通过 ServletContextResource以相对于web应用根目录的方式进行访问相比于通过JDK的Fle类访问文件资源的方式 Spring的 Resource实现类无疑提供了更加灵活便捷的访问方式 用户可以根据实际情况选择适合的 Resource实现类访问资源。
下面分别通过 FileSystemResource和 ClassPathResource访问同一个文件资源
在获取资源后 用户就可以通过 Resource接口定义的多个方法访问文件的数据和其他信息。如可以通过 getFileName()方法获取文件名 通过 getFile()方法获取资源对应的File对象
通过 getlnputStream()方法直接获取文件的输入流。
通过 WritableResource接口定义的多个方法向文件写数据
通过 getOutputStream()方法直接获取文件的输出流。
此外 还可以通过 createRelative(String relativePath)在资源相对地址上创建新的文件。
在Web应用中 用户还可以通过 ServletcontextResource以相对于Web应用根目录的方式访问文件资源
如示例:
Resource res = new ClassPathResource("conf/file1.txt"); EncodedResource encRes = new EncodedResource(res "UTF-8"); String content = FileCopyUtils.copyToString(encRes.getReader()); System.out.println(content);