Top Description Fields Constructors Methods
org.springframework.web.reactive.config

public Class ResourceHandlerRegistration

extends Object
Class Inheritance
Imports
java.util.ArrayList, .Arrays, .HashMap, .List, .Map, java.util.function.Function, org.springframework.cache.Cache, org.springframework.core.io.Resource, .ResourceLoader, org.springframework.http.CacheControl, .MediaType, .MediaTypeFactory, org.springframework.lang.Nullable, org.springframework.util.Assert, org.springframework.web.reactive.resource.ResourceWebHandler, org.springframework.web.server.ServerWebExchange

Assist with creating and configuring a static resources handler.
Author
Rossen Stoyanchev
Since
5.0

Field Summary

Modifier and TypeField and Description
private CacheControl
private Function<Resource, String>
private final List<String>
private Map<String, MediaType>
private boolean
private final String[]
private ResourceChainRegistration
private final ResourceLoader
private boolean

Constructor Summary

AccessConstructor and Description
public
ResourceHandlerRegistration(ResourceLoader
a resource loader for turning a String location into a Resource
resourceLoader
,
String...
one or more resource URL path patterns
pathPatterns
)

Create a ResourceHandlerRegistration instance.

Method Summary

Modifier and TypeMethod and Description
public ResourceHandlerRegistration

Returns:

the same ResourceHandlerRegistration instance, for chained method invocation
addResourceLocations
(String... resourceLocations)

Add one or more resource locations from which to serve static content.

protected String[]
getPathPatterns()

Returns the URL path patterns for the resource handler.

protected ResourceWebHandler
public ResourceChainRegistration

Returns:

the same ResourceHandlerRegistration instance, for chained method invocation
resourceChain
(boolean
whether to cache the result of resource resolution; setting this to "true" is recommended for production (and "false" for development, especially when applying a version strategy)
cacheResources
)

Configure a chain of resource resolvers and transformers to use.

public ResourceChainRegistration

Returns:

the same ResourceHandlerRegistration instance, for chained method invocation
resourceChain
(boolean
whether to cache the result of resource resolution; setting this to "true" is recommended for production (and "false" for development, especially when applying a version strategy
cacheResources
,
Cache
the cache to use for storing resolved and transformed resources; by default a org.springframework.cache.concurrent.ConcurrentMapCache is used. Since Resources aren't serializable and can be dependent on the application host, one should not use a distributed cache but rather an in-memory cache.
cache
)

Configure a chain of resource resolvers and transformers to use.

public ResourceHandlerRegistration

Returns:

the same ResourceHandlerRegistration instance, for chained method invocation
setCacheControl
(CacheControl
the CacheControl configuration to use
cacheControl
)

Specify the CacheControl which should be used by the resource handler.

public ResourceHandlerRegistration
setEtagGenerator(Function<Resource, String>
the HTTP ETag generator function to use.
etagGenerator
)

Configure a generator function that will be used to create the ETag information, given a Resource that is about to be written to the response.

public void
setMediaTypes(Map<String, MediaType>
media type mappings
mediaTypes
)

Add mappings between file extensions extracted from the filename of static Resources and the media types to use for the response.

public ResourceHandlerRegistration

Returns:

the same ResourceHandlerRegistration instance, for chained method invocation
setOptimizeLocations
(boolean
whether to optimize the locations through an existence check on startup
optimizeLocations
)

Set whether to optimize the specified locations through an existence check on startup, filtering non-existing directories upfront so that they do not have to be checked on every resource access.

public ResourceHandlerRegistration

Returns:

the same ResourceHandlerRegistration instance, for chained method invocation
setUseLastModified
(boolean
whether the "last modified" resource information should be used
useLastModified
)

Set whether the Resource#lastModified() information should be used to drive HTTP responses.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

cacheControlback to summary
private CacheControl cacheControl
Annotations
@Nullable
etagGeneratorback to summary
private Function<Resource, String> etagGenerator
Annotations
@Nullable
locationValuesback to summary
private final List<String> locationValues
mediaTypesback to summary
private Map<String, MediaType> mediaTypes
Annotations
@Nullable
optimizeLocationsback to summary
private boolean optimizeLocations
pathPatternsback to summary
private final String[] pathPatterns
resourceChainRegistrationback to summary
private ResourceChainRegistration resourceChainRegistration
Annotations
@Nullable
resourceLoaderback to summary
private final ResourceLoader resourceLoader
useLastModifiedback to summary
private boolean useLastModified

Constructor Detail

ResourceHandlerRegistrationback to summary
public ResourceHandlerRegistration(ResourceLoader resourceLoader, String... pathPatterns)

Create a ResourceHandlerRegistration instance.

Parameters
resourceLoader:ResourceLoader

a resource loader for turning a String location into a Resource

pathPatterns:String[]

one or more resource URL path patterns

Method Detail

addResourceLocationsback to summary
public ResourceHandlerRegistration addResourceLocations(String... resourceLocations)

Add one or more resource locations from which to serve static content.

Each location must point to a valid directory. Multiple locations may be specified as a comma-separated list, and the locations will be checked for a given resource in the order specified.

For example, "/", "classpath:/META-INF/public-web-resources/" allows resources to be served both from the web application root and from any JAR on the classpath that contains a /META-INF/public-web-resources/ directory, with resources in the web application root taking precedence.

Returns:ResourceHandlerRegistration

the same ResourceHandlerRegistration instance, for chained method invocation

getPathPatternsback to summary
protected String[] getPathPatterns()

Returns the URL path patterns for the resource handler.

getRequestHandlerback to summary
protected ResourceWebHandler getRequestHandler()

Returns a ResourceWebHandler instance.

resourceChainback to summary
public ResourceChainRegistration resourceChain(boolean cacheResources)

Configure a chain of resource resolvers and transformers to use. This can be useful, for example, to apply a version strategy to resource URLs.

If this method is not invoked, by default only a simple PathResourceResolver is used in order to match URL paths to resources under the configured locations.

Parameters
cacheResources:boolean

whether to cache the result of resource resolution; setting this to "true" is recommended for production (and "false" for development, especially when applying a version strategy)

Returns:ResourceChainRegistration

the same ResourceHandlerRegistration instance, for chained method invocation

resourceChainback to summary
public ResourceChainRegistration resourceChain(boolean cacheResources, Cache cache)

Configure a chain of resource resolvers and transformers to use. This can be useful, for example, to apply a version strategy to resource URLs.

If this method is not invoked, by default only a simple PathResourceResolver is used in order to match URL paths to resources under the configured locations.

Parameters
cacheResources:boolean

whether to cache the result of resource resolution; setting this to "true" is recommended for production (and "false" for development, especially when applying a version strategy

cache:Cache

the cache to use for storing resolved and transformed resources; by default a org.springframework.cache.concurrent.ConcurrentMapCache is used. Since Resources aren't serializable and can be dependent on the application host, one should not use a distributed cache but rather an in-memory cache.

Returns:ResourceChainRegistration

the same ResourceHandlerRegistration instance, for chained method invocation

setCacheControlback to summary
public ResourceHandlerRegistration setCacheControl(CacheControl cacheControl)

Specify the CacheControl which should be used by the resource handler.

Parameters
cacheControl:CacheControl

the CacheControl configuration to use

Returns:ResourceHandlerRegistration

the same ResourceHandlerRegistration instance, for chained method invocation

setEtagGeneratorback to summary
public ResourceHandlerRegistration setEtagGenerator(Function<Resource, String> etagGenerator)

Configure a generator function that will be used to create the ETag information, given a Resource that is about to be written to the response.

This function should return a String that will be used as an argument in ServerWebExchange#checkNotModified(String), or null if no value can be generated for the given resource.

Parameters
etagGenerator:Function<Resource, String>

the HTTP ETag generator function to use.

Since
6.1
See Also
ResourceWebHandler#setEtagGenerator(Function)
setMediaTypesback to summary
public void setMediaTypes(Map<String, MediaType> mediaTypes)

Add mappings between file extensions extracted from the filename of static Resources and the media types to use for the response.

Use of this method is typically not necessary since mappings can be also determined via MediaTypeFactory#getMediaType(Resource).

Parameters
mediaTypes:Map<String, MediaType>

media type mappings

Since
5.3.2
setOptimizeLocationsback to summary
public ResourceHandlerRegistration setOptimizeLocations(boolean optimizeLocations)

Set whether to optimize the specified locations through an existence check on startup, filtering non-existing directories upfront so that they do not have to be checked on every resource access.

The default is false, for defensiveness against zip files without directory entries which are unable to expose the existence of a directory upfront. Switch this flag to true for optimized access in case of a consistent jar layout with directory entries.

Parameters
optimizeLocations:boolean

whether to optimize the locations through an existence check on startup

Returns:ResourceHandlerRegistration

the same ResourceHandlerRegistration instance, for chained method invocation

Since
5.3.13
See Also
ResourceWebHandler#setOptimizeLocations
setUseLastModifiedback to summary
public ResourceHandlerRegistration setUseLastModified(boolean useLastModified)

Set whether the Resource#lastModified() information should be used to drive HTTP responses.

This configuration is set to true by default.

Parameters
useLastModified:boolean

whether the "last modified" resource information should be used

Returns:ResourceHandlerRegistration

the same ResourceHandlerRegistration instance, for chained method invocation

Since
5.3
See Also
ResourceWebHandler#setUseLastModified