クラス ResourceWebHandler
- 実装されているすべてのインターフェース:
InitializingBean, WebHandler
HttpRequestHandler "locations" プロパティは、このハンドラーによって静的リソースの提供が許可される Spring Resource の場所のリストを取得します。リソースは、たとえば "classpath:/META-INF/public-web-resources/"" などのクラスパスの場所から提供できるため、.js、.css などのリソースを jar ファイルに簡単にパッケージ化して提供できます。
このリクエストハンドラーは、resourcesResolver および resourceTransformer チェーンで構成して、提供されるリソースの任意の解決と変換をサポートすることもできます。デフォルトでは、PathResourceResolver は設定された「場所」に基づいてリソースを単に検索します。アプリケーションは、URL にあるバージョンのリソースの URL を解決および準備できる VersionResourceResolver などの追加のリゾルバーおよびトランスフォーマーを構成できます。
また、このハンドラーは Last-Modified ヘッダー(存在する場合)を適切に評価するため、304 ステータスコードが適切に返され、クライアントによってすでにキャッシュされているリソースの不要なオーバーヘッドが回避されます。
- 導入:
- 5.0
- 作成者:
- Rossen Stoyanchev, Brian Clozel, Juergen Hoeller
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明voidCacheControlインスタンスを返して、Cache-Control HTTP レスポンスヘッダーを作成します。リソースを提供するときに使用される HTTP ETag ジェネレーター関数を返します。静的リソースを提供するためのソースとして使用するResourceパスのListを返します。構成された場所の値を返します。configuredメディア型マッピングを返します。protected reactor.core.publisher.Mono<Resource> getResource(ServerWebExchange exchange) 構成されたリソースメッセージライターを返します。設定されたリソースリゾルバーのリストを返します。設定済みのリソーストランスフォーマのリストを返します。reactor.core.publisher.Mono<VoidSE> handle(ServerWebExchange exchange) リソースリクエストを処理します。protected void構成されたリソースリゾルバーの中からPathResourceResolverを探し、そのクラスで構成されたlocationsと一致するようにallowedLocationsプロパティ(空の場合)を設定します。protected booleanisInvalidPath(StringSE path) ResourceHandlerUtils.isInvalidPath(String)の後に呼び出され、サブクラスがさらに検証を実行できるようにします。boolean起動時の存在チェックを通じて指定された場所を最適化するかどうかを返し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。boolean静的リソースを提供するときに、Resource.lastModified()情報を使用して HTTP レスポンスを駆動するかどうかを返します。protected StringSEprocessPath(StringSE path) 指定されたリソースパスを処理します。voidsetCacheControl(@Nullable CacheControl cacheControl) CacheControlインスタンスを設定して、Cache-Control HTTP レスポンスヘッダーを構築します。voidsetEtagGenerator(@Nullable FunctionSE<Resource, StringSE> etagGenerator) レスポンスに書き込もうとしているResourceを考慮して、ETag 情報の作成に使用されるジェネレーター関数を構成します。protected voidsetHeaders(ServerWebExchange exchange, Resource resource, @Nullable MediaType mediaType) レスポンスにヘッダーを設定します。voidsetLocations(@Nullable ListSE<Resource> locations) 静的リソースを提供するためのソースとして使用するResourceパスのListを設定します。voidsetLocationValues(ListSE<StringSE> locationValues) Resourceロケーションに解決される文字列ベースのロケーション値のリストを受け入れます。voidsetMediaTypes(MapSE<StringSE, MediaType> mediaTypes) 静的Resourceのファイル名から抽出されたファイル拡張子と、レスポンスに使用するメディア型との間にマッピングを追加します。voidsetOptimizeLocations(boolean optimizeLocations) 起動時の存在チェックで指定した場所を最適化するかどうかを設定し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。voidsetResourceHttpMessageWriter(@Nullable ResourceHttpMessageWriter httpMessageWriter) 使用するResourceHttpMessageWriterを構成します。voidsetResourceLoader(ResourceLoader resourceLoader) location valuesをロードする ResourceLoader を提供します。voidsetResourceResolvers(@Nullable ListSE<ResourceResolver> resourceResolvers) 使用するResourceResolversのリストを構成します。voidsetResourceTransformers(@Nullable ListSE<ResourceTransformer> resourceTransformers) 使用するResourceTransformersのリストを構成します。voidsetUseLastModified(boolean useLastModified) リソースを提供するときにResource.lastModified()を確認し、この情報を使用して"Last-Modified"HTTP レスポンスヘッダーを駆動するかどうかを設定します。toString()
コンストラクターの詳細
ResourceWebHandler
public ResourceWebHandler()
メソッドの詳細
setResourceLoader
location valuesをロードする ResourceLoader を提供します。- 導入:
- 5.1
setLocationValues
getLocationValues
setLocations
getLocations
静的リソースを提供するためのソースとして使用するResourceパスのListを返します。ロードされたリソースベースの場所の代わりに
locationValuesが提供される場合、このメソッドはafterPropertiesSet()による初期化の後まで空を返すことに注意してください。注意 : 場所のリストは、実際には存在しない場所を除外するようにフィルタリングされる場合があります。そのため、このメソッドから返されるリストは、指定されたすべての場所のサブセットになる可能性があります。
setOptimizeLocations(boolean)を参照してください。- 関連事項:
setResourceResolvers
使用するResourceResolversのリストを構成します。デフォルトでは、
PathResourceResolverが構成されています。このプロパティを使用する場合、PathResourceResolverを最後のリゾルバーとして追加することをお勧めします。getResourceResolvers
設定されたリソースリゾルバーのリストを返します。setResourceTransformers
使用するResourceTransformersのリストを構成します。デフォルトでは、使用するトランスフォーマは構成されていません。
getResourceTransformers
設定済みのリソーストランスフォーマのリストを返します。setResourceHttpMessageWriter
使用するResourceHttpMessageWriterを構成します。デフォルトでは、
ResourceHttpMessageWriterが構成されます。getResourceHttpMessageWriter
構成されたリソースメッセージライターを返します。setCacheControl
CacheControlインスタンスを設定して、Cache-Control HTTP レスポンスヘッダーを構築します。getCacheControl
CacheControlインスタンスを返して、Cache-Control HTTP レスポンスヘッダーを作成します。setUseLastModified
public void setUseLastModified(boolean useLastModified) リソースを提供するときにResource.lastModified()を確認し、この情報を使用して"Last-Modified"HTTP レスポンスヘッダーを駆動するかどうかを設定します。このオプションはデフォルトで有効になっており、静的ファイルのメタデータを無視する必要がある場合はオフにする必要があります。
- 導入:
- 5.3
isUseLastModified
public boolean isUseLastModified()静的リソースを提供するときに、Resource.lastModified()情報を使用して HTTP レスポンスを駆動するかどうかを返します。- 導入:
- 5.3
setEtagGenerator
レスポンスに書き込もうとしているResourceを考慮して、ETag 情報の作成に使用されるジェネレーター関数を構成します。この関数は、
ServerWebExchange.checkNotModified(String)で引数として使用される String を返す必要があります。指定されたリソースに対して値を生成できない場合はnullで引数として使用されます。- パラメーター:
etagGenerator- 使用する HTTP ETag ジェネレーター関数。- 導入:
- 6.1
getEtagGenerator
リソースを提供するときに使用される HTTP ETag ジェネレーター関数を返します。- 戻り値:
- HTTP ETag ジェネレーター関数
- 導入:
- 6.1
setOptimizeLocations
public void setOptimizeLocations(boolean optimizeLocations) 起動時の存在チェックで指定した場所を最適化するかどうかを設定し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。デフォルトは
falseです。これは、ディレクトリの存在を事前に公開できないディレクトリエントリのない zip ファイルに対する防御のためです。ディレクトリエントリとの一貫した jar レイアウトの場合に最適化されたアクセスのために、このフラグをtrueに切り替えます。- 導入:
- 5.3.13
isOptimizeLocations
public boolean isOptimizeLocations()起動時の存在チェックを通じて指定された場所を最適化するかどうかを返し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。- 導入:
- 5.3.13
setMediaTypes
静的Resourceのファイル名から抽出されたファイル拡張子と、レスポンスに使用するメディア型との間にマッピングを追加します。マッピングは
MediaTypeFactory.getMediaType(Resource)を介して決定することもできるため、通常、この方法を使用する必要はありません。- パラメーター:
mediaTypes- メディア型のマッピング- 導入:
- 5.3.2
getMediaTypes
afterPropertiesSet
インターフェースからコピーされた説明:InitializingBeanすべての Bean プロパティを設定し、BeanFactoryAware、ApplicationContextAwareなどを満たした後、包含BeanFactoryによって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet - 例外:
ExceptionSE- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合
initAllowedLocations
protected void initAllowedLocations()構成されたリソースリゾルバーの中からPathResourceResolverを探し、そのクラスで構成されたlocationsと一致するようにallowedLocationsプロパティ(空の場合)を設定します。handle
リソースリクエストを処理します。設定された場所のリストでリクエストされたリソースの存在を確認します。リソースが存在しない場合、
404レスポンスがクライアントに返されます。リソースが存在する場合、Last-Modifiedヘッダーの存在についてリクエストがチェックされ、その値は指定されたリソースの最終変更タイムスタンプと比較され、Last-Modified値が大きい場合は304ステータスコードが返されます。リソースがLast-Modified値よりも新しい場合、またはヘッダーが存在しない場合、リソースのコンテンツリソースは、キャッシュヘッダーが 1 年後に期限切れになるように設定されたレスポンスに書き込まれます。- 次で指定:
- インターフェース
WebHandlerのhandle - パラメーター:
exchange- 現在のサーバー交換- 戻り値:
- リクエスト処理が完了したことを示す
Mono<Void>
getResource
processPath
指定されたリソースパスを処理します。デフォルトでは、このメソッドは
ResourceHandlerUtils.normalizeInputPath(String)に委譲します。isInvalidPath
ResourceHandlerUtils.isInvalidPath(String)の後に呼び出され、サブクラスがさらに検証を実行できるようにします。デフォルトでは、このメソッドは検証を実行しません。
setHeaders
protected void setHeaders(ServerWebExchange exchange, Resource resource, @Nullable MediaType mediaType) throws IOExceptionSE レスポンスにヘッダーを設定します。GET リクエストと HEAD リクエストの両方で呼び出されます。- パラメーター:
exchange- 現在の交換resource- 特定されたリソース (非null)mediaType- リソースのメディア型 (非null)- 例外:
IOExceptionSE
toString