4.3 Built-in Resource implemetations
4.3 Built-in Resource implemetations
SpringにバンドルされているResourceの実装クラスについて。
4.3.1 UrlResource
java.net.URLをラップしており、URLを介して取得できるファイルや、HTTPリソース、FTPリソースなどを取得するために用いる。URLは一般的なURL形式のの文字列で表現される。file:の場合はファイルシステムのパス。http:はHTTTPプロトコルでアクセスするリソース。ftp:の場合はftpでアクセスするリソース、等。
UrlResourceは普通はコンストラクタでインスタンスを生成する。ただしパスを指定する文字列を指定するAPIによって暗黙的に生成することがある。(@See ResourdeLoader)
この場合は、JaavaBeansのPropertyEditorがどのResourceを生成するかを決定する。もしパスを指定する文字列にclasspath:などといったprefixが含まれている場合は、
4.3.2以降に述べるprefixに該当するResourceクラスのインスタンスを生成する。該当するものがない場合はURL文字列であるとみなしUrlResourceのインスタンスを生成する。
4.3.2 ClassPathResource
クラスパスからリソース取得するときに使用する。現在のスレッドのContextClasssLoaderからの取得、指定されたクラスローダからの取得、指定したクラスをロードしたクラスローダからの取得の3つが可能。Resourceのシグニチャ上はFileを扱うことも可能になっているが、ClassPathResourceはFileとして扱う事はできないので常にjava.net.URLとして扱うソリューションとなる。(日本語見直したほうが)
UrlResource同様、通常はコンストラクタでインスタンスを生成する。パスを指定する文字列によって暗黙的に生成する場合は、prefixがclasspath:である場合にClassPathResourceがインスタンス化される。
4.3.3 FileSystemResource
ファイルもしくはファイルパスを指定してリソースを取得する場合に使用する。
4.3.4 ServletContextResource
Webアプリケーションのルートディレクトリからの相対パスでリソースを取得する場合に使用する。
このクラスを使った場合、URLによるリソースの取り扱いは常に可能だが、Fileによる取り扱いは対象のWARがファイルシステム上に展開されているかどうかで決まる。
どちらにせよ、対象のリソースにどのようにアクセスするかはサービレットコンテナの実装に依存する。
4.3.5 InputStreamResource
InputStreamを指定するリソースの実装クラス。対応するリソースが他にない場合に使用する。普通はこれは使いません。
4.3.6 ByteArrayResource
バイト配列を指定するリソースの実装クラス。すでに存在するバイナリ(バイト配列)からリソースを復元する場合に使用する。