クラス 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
コンストラクターのサマリー
コンストラクター方法の概要
修飾子と型メソッド説明void
CacheControl
インスタンスを返して、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 boolean
isInvalidPath
(StringSE path) ResourceHandlerUtils.isInvalidPath(String)
の後に呼び出され、サブクラスがさらに検証を実行できるようにします。boolean
起動時の存在チェックを通じて指定された場所を最適化するかどうかを返し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。boolean
静的リソースを提供するときに、Resource.lastModified()
情報を使用して HTTP レスポンスを駆動するかどうかを返します。protected StringSE
processPath
(StringSE path) 指定されたリソースパスを処理します。void
setCacheControl
(CacheControl cacheControl) CacheControl
インスタンスを設定して、Cache-Control HTTP レスポンスヘッダーを構築します。void
setEtagGenerator
(FunctionSE<Resource, StringSE> etagGenerator) レスポンスに書き込もうとしているResource
を考慮して、ETag 情報の作成に使用されるジェネレーター関数を構成します。protected void
setHeaders
(ServerWebExchange exchange, Resource resource, MediaType mediaType) レスポンスにヘッダーを設定します。void
setLocations
(ListSE<Resource> locations) 静的リソースを提供するためのソースとして使用するResource
パスのList
を設定します。void
setLocationValues
(ListSE<StringSE> locationValues) Resource
ロケーションに解決される文字列ベースのロケーション値のリストを受け入れます。void
setMediaTypes
(MapSE<StringSE, MediaType> mediaTypes) 静的Resource
のファイル名から抽出されたファイル拡張子と、レスポンスに使用するメディア型との間にマッピングを追加します。void
setOptimizeLocations
(boolean optimizeLocations) 起動時の存在チェックで指定した場所を最適化するかどうかを設定し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。void
setResourceHttpMessageWriter
(ResourceHttpMessageWriter httpMessageWriter) 使用するResourceHttpMessageWriter
を構成します。void
setResourceLoader
(ResourceLoader resourceLoader) location values
をロードする ResourceLoader を提供します。void
setResourceResolvers
(ListSE<ResourceResolver> resourceResolvers) 使用するResourceResolvers
のリストを構成します。void
setResourceTransformers
(ListSE<ResourceTransformer> resourceTransformers) 使用するResourceTransformers
のリストを構成します。void
setUseLastModified
(boolean useLastModified) リソースを提供するときにResource.lastModified()
を確認し、この情報を使用して"Last-Modified"
HTTP レスポンスヘッダーを駆動するかどうかを設定します。toString()
コンストラクターの詳細
ResourceWebHandler
public ResourceWebHandler()
メソッドの詳細
setResourceLoader
location values
をロードする ResourceLoader を提供します。- 導入:
- 5.1
setLocationValues
Resource
ロケーションに解決される文字列ベースのロケーション値のリストを受け入れます。- 導入:
- 5.1
getLocationValues
構成された場所の値を返します。- 導入:
- 5.1
setLocations
静的リソースを提供するためのソースとして使用するResource
パスのList
を設定します。getLocations
静的リソースを提供するためのソースとして使用するResource
パスのList
を返します。ロードされたリソースベースの場所の代わりに
locationValues
が提供される場合、このメソッドはafterPropertiesSet()
による初期化の後まで空を返すことに注意してください。注意 : 5.3.11 の時点で、場所のリストは実際には存在しない場所を除外するようにフィルタリングされる可能性があるため、このメソッドから返されるリストは、指定されたすべての場所のサブセットである可能性があります。
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
configured
メディア型マッピングを返します。- 導入:
- 5.3.2
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(java.lang.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