Class ResourceHandlerRegistration

java.lang.Object
org.springframework.web.reactive.config.ResourceHandlerRegistration

public class ResourceHandlerRegistration extends Object
Assist with creating and configuring a static resources handler.
Since:
5.0
Author:
Rossen Stoyanchev
  • Constructor Details

    • ResourceHandlerRegistration

      public ResourceHandlerRegistration(ResourceLoader resourceLoader, String... pathPatterns)
      Create a ResourceHandlerRegistration instance.
      Parameters:
      resourceLoader - a resource loader for turning a String location into a Resource
      pathPatterns - one or more resource URL path patterns
  • Method Details

    • addResourceLocations

      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:
      the same ResourceHandlerRegistration instance, for chained method invocation
    • setCacheControl

      public ResourceHandlerRegistration setCacheControl(CacheControl cacheControl)
      Specify the CacheControl which should be used by the resource handler.
      Parameters:
      cacheControl - the CacheControl configuration to use
      Returns:
      the same ResourceHandlerRegistration instance, for chained method invocation
    • setUseLastModified

      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 - whether the "last modified" resource information should be used
      Returns:
      the same ResourceHandlerRegistration instance, for chained method invocation
      Since:
      5.3
      See Also:
    • setEtagGenerator

      public ResourceHandlerRegistration setEtagGenerator(@Nullable 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 - the HTTP ETag generator function to use.
      Since:
      6.1
      See Also:
    • setOptimizeLocations

      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 - whether to optimize the locations through an existence check on startup
      Returns:
      the same ResourceHandlerRegistration instance, for chained method invocation
      Since:
      5.3.13
      See Also:
    • resourceChain

      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 - 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:
      the same ResourceHandlerRegistration instance, for chained method invocation
    • resourceChain

      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 - 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 - the cache to use for storing resolved and transformed resources; by default a 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:
      the same ResourceHandlerRegistration instance, for chained method invocation
    • setMediaTypes

      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 - media type mappings
      Since:
      5.3.2
    • getPathPatterns

      protected String[] getPathPatterns()
      Returns the URL path patterns for the resource handler.
    • getRequestHandler

      protected ResourceWebHandler getRequestHandler()
      Returns a ResourceWebHandler instance.