Spring 配置資源Resource,spring資源resource

來源:互聯網
上載者:User

Spring 配置資源Resource,spring資源resource
Java中,不同來源的資源抽象成URL,通過註冊不同的handler(URLStreamHandler)來處理不同來源的資源的讀取邏輯。一般handler的類型使用不同的首碼(協議,protocal)來識別,如:“file:”、“http:“、”jar:”等。 對於Spring,URL沒有定義相應的,如“classpath:“的handler,定義也相對麻煩,Spring對設定檔的讀取做了相應的封裝,通過Resource介面來抽象底層資源。如下:

/** * Interface for a resource descriptor that abstracts from the actual * type of underlying resource, such as a file or class path resource. * * <p>An InputStream can be opened for every resource if it exists in * physical form, but a URL or File handle can just be returned for * certain resources. The actual behavior is implementation-specific. * * @author Juergen Hoeller * @since 28.12.2003 * @see #getInputStream() * @see #getURL() * @see #getURI() * @see #getFile() * @see WritableResource * @see ContextResource * @see FileSystemResource * @see ClassPathResource * @see UrlResource * @see ByteArrayResource * @see InputStreamResource * @see PathResource */public interface Resource extends InputStreamSource {    /**     * Return whether this resource actually exists in physical form.     * <p>This method performs a definitive existence check, whereas the     * existence of a {@code Resource} handle only guarantees a     * valid descriptor handle.     */    boolean exists();    /**     * Return whether the contents of this resource can be read,     * e.g. via {@link #getInputStream()} or {@link #getFile()}.     * <p>Will be {@code true} for typical resource descriptors;     * note that actual content reading may still fail when attempted.     * However, a value of {@code false} is a definitive indication     * that the resource content cannot be read.     * @see #getInputStream()     */    boolean isReadable();    /**     * Return whether this resource represents a handle with an open     * stream. If true, the InputStream cannot be read multiple times,     * and must be read and closed to avoid resource leaks.     * <p>Will be {@code false} for typical resource descriptors.     */    boolean isOpen();    /**     * Return a URL handle for this resource.     * @throws IOException if the resource cannot be resolved as URL,     * i.e. if the resource is not available as descriptor     */    URL getURL() throws IOException;    /**     * Return a URI handle for this resource.     * @throws IOException if the resource cannot be resolved as URI,     * i.e. if the resource is not available as descriptor     */    URI getURI() throws IOException;    /**     * Return a File handle for this resource.     * @throws IOException if the resource cannot be resolved as absolute     * file path, i.e. if the resource is not available in a file system     */    File getFile() throws IOException;    /**     * Determine the content length for this resource.     * @throws IOException if the resource cannot be resolved     * (in the file system or as some other known physical resource type)     */    long contentLength() throws IOException;    /**     * Determine the last-modified timestamp for this resource.     * @throws IOException if the resource cannot be resolved     * (in the file system or as some other known physical resource type)     */    long lastModified() throws IOException;    /**     * Create a resource relative to this resource.     * @param relativePath the relative path (relative to this resource)     * @return the resource handle for the relative resource     * @throws IOException if the relative resource cannot be determined     */    Resource createRelative(String relativePath) throws IOException;    /**     * Determine a filename for this resource, i.e. typically the last     * part of the path: for example, "myfile.txt".     * <p>Returns {@code null} if this type of resource does not     * have a filename.     */    String getFilename();    /**     * Return a description for this resource,     * to be used for error output when working with the resource.     * <p>Implementations are also encouraged to return this value     * from their {@code toString} method.     * @see Object#toString()     */    String getDescription();}

對於不同來源的資源檔都有相應的Resource實現,檔案(FileSystemResource)、Classpath資源(ClassPathResource)、URL資源(UrlResource)、InputStream資源(InputStreamResource)、Byte數組資源(ByteArrayResource)等。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.