public class ResourceWebHandler extends ObjectSE implements WebHandler, InitializingBean
HttpRequestHandler
"locations" プロパティは、静的リソースがこのハンドラーによって提供されることを許可されている Spring Resource
ロケーションのリストを取ります。リソースは、クラスパスの場所から提供できます。"classpath:/META-INF/public-web-resources/"。jar ファイルで .js、.css などのリソースを便利にパッケージ化して提供できます。
このリクエストハンドラーは、resourcesResolver
および resourceTransformer
チェーンで構成して、提供されるリソースの任意の解決と変換をサポートすることもできます。デフォルトでは、PathResourceResolver
は設定された「場所」に基づいてリソースを単に検索します。アプリケーションは、URL にあるバージョンのリソースの URL を解決および準備できる VersionResourceResolver
などの追加のリゾルバーおよびトランスフォーマーを構成できます。
また、このハンドラーは Last-Modified
ヘッダー(存在する場合)を適切に評価するため、304
ステータスコードが適切に返され、クライアントによってすでにキャッシュされているリソースの不要なオーバーヘッドが回避されます。
コンストラクターと説明 |
---|
ResourceWebHandler() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
CacheControl | getCacheControl() CacheControl インスタンスを返して、Cache-Control HTTP レスポンスヘッダーを作成します。 |
ListSE<Resource> | getLocations() 静的リソースを提供するためのソースとして使用する Resource パスの List を返します。 |
ListSE<StringSE> | getLocationValues() 構成された場所の値を返します。 |
protected reactor.core.publisher.Mono<Resource> | getResource(ServerWebExchange exchange) |
ResourceHttpMessageWriter | getResourceHttpMessageWriter() 構成されたリソースメッセージライターを返します。 |
ListSE<ResourceResolver> | getResourceResolvers() 設定されたリソースリゾルバーのリストを返します。 |
ListSE<ResourceTransformer> | getResourceTransformers() 設定済みのリソーストランスフォーマのリストを返します。 |
reactor.core.publisher.Mono<VoidSE> | handle(ServerWebExchange exchange) リソースリクエストを処理します。 |
protected void | initAllowedLocations() 構成されたリソースリゾルバーの中から PathResourceResolver を探し、そのクラスで構成された locations と一致するように allowedLocations プロパティ(空の場合)を設定します。 |
protected boolean | isInvalidPath(StringSE path) 無効なリソースパスを識別します。 |
protected StringSE | processPath(StringSE path) 指定されたリソースパスを処理します。 |
void | setCacheControl(CacheControl cacheControl) CacheControl インスタンスを設定して、Cache-Control HTTP レスポンスヘッダーを構築します。 |
protected void | setHeaders(ServerWebExchange exchange, Resource resource, MediaType mediaType) レスポンスにヘッダーを設定します。 |
void | setLocations(ListSE<Resource> locations) 静的リソースを提供するためのソースとして使用する Resource パスの List を設定します。 |
void | setLocationValues(ListSE<StringSE> locationValues) Resource ロケーションに解決される文字列ベースのロケーション値のリストを受け入れます。 |
void | setResourceHttpMessageWriter(ResourceHttpMessageWriter httpMessageWriter) 使用する ResourceHttpMessageWriter を構成します。 |
void | setResourceLoader(ResourceLoader resourceLoader) location values をロードする ResourceLoader を提供します。 |
void | setResourceResolvers(ListSE<ResourceResolver> resourceResolvers) 使用する ResourceResolvers のリストを構成します。 |
void | setResourceTransformers(ListSE<ResourceTransformer> resourceTransformers) 使用する ResourceTransformers のリストを構成します。 |
StringSE | toString() |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
public void setLocationValues(ListSE<StringSE> locationValues)
Resource
ロケーションに解決される文字列ベースのロケーション値のリストを受け入れます。public void setLocations(@Nullable ListSE<Resource> locations)
Resource
パスの List
を設定します。public ListSE<Resource> getLocations()
Resource
パスの List
を返します。 ロードされたリソースベースの場所の代わりに locationValues
が提供される場合、このメソッドは afterPropertiesSet()
による初期化の後まで空を返すことに注意してください。
public void setResourceResolvers(@Nullable ListSE<ResourceResolver> resourceResolvers)
ResourceResolvers
のリストを構成します。 デフォルトでは、PathResourceResolver
が構成されています。このプロパティを使用する場合、PathResourceResolver
を最後のリゾルバーとして追加することをお勧めします。
public ListSE<ResourceResolver> getResourceResolvers()
public void setResourceTransformers(@Nullable ListSE<ResourceTransformer> resourceTransformers)
ResourceTransformers
のリストを構成します。デフォルトでは、使用するトランスフォーマは構成されていません。
public ListSE<ResourceTransformer> getResourceTransformers()
public void setCacheControl(@Nullable CacheControl cacheControl)
CacheControl
インスタンスを設定して、Cache-Control HTTP レスポンスヘッダーを構築します。@Nullable public CacheControl getCacheControl()
CacheControl
インスタンスを返して、Cache-Control HTTP レスポンスヘッダーを作成します。public void setResourceHttpMessageWriter(@Nullable ResourceHttpMessageWriter httpMessageWriter)
ResourceHttpMessageWriter
を構成します。 デフォルトでは、ResourceHttpMessageWriter
が構成されます。
@Nullable public ResourceHttpMessageWriter getResourceHttpMessageWriter()
public void setResourceLoader(ResourceLoader resourceLoader)
location values
をロードする ResourceLoader を提供します。public void afterPropertiesSet() throws ExceptionSE
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
ExceptionSE
- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合 protected void initAllowedLocations()
PathResourceResolver
を探し、そのクラスで構成された locations
と一致するように allowedLocations
プロパティ(空の場合)を設定します。public reactor.core.publisher.Mono<VoidSE> handle(ServerWebExchange exchange)
設定された場所のリストでリクエストされたリソースの存在を確認します。リソースが存在しない場合、404
レスポンスがクライアントに返されます。リソースが存在する場合、Last-Modified
ヘッダーの存在についてリクエストがチェックされ、その値は指定されたリソースの最終変更タイムスタンプと比較され、Last-Modified
値が大きい場合は 304
ステータスコードが返されます。リソースが Last-Modified
値よりも新しい場合、またはヘッダーが存在しない場合、リソースのコンテンツリソースは、キャッシュヘッダーが 1 年後に期限切れになるように設定されたレスポンスに書き込まれます。
WebHandler
の handle
exchange
- 現在のサーバー交換 Mono<Void>
protected reactor.core.publisher.Mono<Resource> getResource(ServerWebExchange exchange)
protected StringSE processPath(StringSE path)
デフォルトの実装は次のものに置き換わります。
" / // foo/bar"
は "/foo/bar"
になります。protected boolean isInvalidPath(StringSE path)
StringUtils.cleanPath(java.lang.String)
の呼び出し後の "../" を含むパス。valid URL
を表すパス、または先頭のスラッシュが削除された後のパスを表すパス。注意 : この方法では、先頭の重複する "/" または制御文字(空白など)が削除され、パスが単一の "/" で予測どおりに開始するか、パスが 1 つもないことが想定されています。
path
- 検証するパス true
、そうでない場合は false
protected void setHeaders(ServerWebExchange exchange, Resource resource, @Nullable MediaType mediaType) throws IOExceptionSE
exchange
- 現在の交換 resource
- 特定されたリソース (非 null
)mediaType
- リソースのメディア型 (非 null
)IOExceptionSE
public StringSE toString()
ObjectSE
の toStringSE