Интерфейс Spring * Resource
предназначен для того, чтобы стать более функциональным интерфейсом для абстрагирования доступа к низкоуровневым ресурсам.
Иногда он оборачивает файл, а иногда нет.в орудиях: UrlResource
, ClassPathResource
, FileSystemResource
, ServletContextResource
, InputStreamResource
, ByteArrayResource
.
Вы можете самостоятельно реализовать форму ресурса.
UrlResource
переносит java.net.URL
и может использоваться для доступа к любому объекту, который обычно доступен через URL.Если вы используете префикс http:
, ресурсом является URL.
ClassPathResource
представляет ресурс, который следует получить из пути к классам.Эта реализация Resource
поддерживает разрешение как java.io.File
, если ресурс пути к классу находится в файловой системе, но не для ресурсов пути к классам, которые находятся в jar-файле и не были расширены (механизмом сервлета или любой другой средой) дофайловая система.Для решения этой проблемы различные реализации Resource
всегда поддерживают разрешение как java.net.URL
.
FileSystemResource
- это средство для ручек java.io.File
. Очевидно, что оно поддерживает разрешение как File
и как URL
.
InputStreamResource
является ресурсом реализации для данного InputStream
.Не используйте его, если вам нужно где-то хранить дескриптор ресурса или если вам нужно прочитать поток несколько раз.
ByteArrayResource
- это Resource
реализация для данного байтового массива.Он создает ByteArrayInputStream для данного байтового массива.
Таким образом, вы не всегда должны использовать getFile()
, так как Resource
Spring не всегда представляет ресурс файловой системы. По этой причине мы рекомендуем использовать getInputStream()
для доступа к содержимому ресурса, поскольку оно может функционировать для всех возможных типов ресурсов.
См. : Resources