org.springframework.web.servlet.resource

Class EncodedResourceResolver

  • All Implemented Interfaces:
    ResourceResolver


    public class EncodedResourceResolver
    extends AbstractResourceResolver
    Resolver that delegates to the chain, and if a resource is found, it then attempts to find an encoded (e.g. gzip, brotli) variant that is acceptable based on the "Accept-Encoding" request header.

    The list of supported contentCodings can be configured, in order of preference, and each coding must be associated with extensions.

    Note that this resolver must be ordered ahead of a VersionResourceResolver with a content-based, version strategy to ensure the version calculation is not impacted by the encoding.

    Since:
    5.1
    Author:
    Rossen Stoyanchev
    • Field Detail

      • DEFAULT_CODINGS

        public static final java.util.List<java.lang.String> DEFAULT_CODINGS
        The default content codings.
    • Constructor Detail

      • EncodedResourceResolver

        public EncodedResourceResolver()
    • Method Detail

      • setContentCodings

        public void setContentCodings(java.util.List<java.lang.String> codings)
        Configure the supported content codings in order of preference. The first coding that is present in the "Accept-Encoding" header for a given request, and that has a file present with the associated extension, is used.

        Note: Each coding must be associated with a file extension via registerExtension(java.lang.String, java.lang.String) or setExtensions(java.util.Map<java.lang.String, java.lang.String>). Also customizations to the list of codings here should be matched by customizations to the same list in CachingResourceResolver to ensure encoded variants of a resource are cached under separate keys.

        By default this property is set to ["br", "gzip"].

        Parameters:
        codings - one or more supported content codings
      • getContentCodings

        public java.util.List<java.lang.String> getContentCodings()
        Return a read-only list with the supported content codings.
      • setExtensions

        public void setExtensions(java.util.Map<java.lang.String,java.lang.String> extensions)
        Configure mappings from content codings to file extensions. A dot "." will be prepended in front of the extension value if not present.

        By default this is configured with ["br" -> ".br"] and ["gzip" -> ".gz"].

        Parameters:
        extensions - the extensions to use.
        See Also:
        registerExtension(String, String)
      • getExtensions

        public java.util.Map<java.lang.String,java.lang.String> getExtensions()
        Return a read-only map with coding-to-extension mappings.
      • registerExtension

        public void registerExtension(java.lang.String coding,
                                      java.lang.String extension)
        Java config friendly alternative to setExtensions(Map).
        Parameters:
        coding - the content coding
        extension - the associated file extension