Class ResourceUrlProvider

java.lang.Object
org.springframework.web.servlet.resource.ResourceUrlProvider
All Implemented Interfaces:
EventListener, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware, org.springframework.context.ApplicationListener<org.springframework.context.event.ContextRefreshedEvent>

public class ResourceUrlProvider extends Object implements org.springframework.context.ApplicationListener<org.springframework.context.event.ContextRefreshedEvent>, org.springframework.context.ApplicationContextAware
A central component to use to obtain the public URL path that clients should use to access a static resource.

This class is aware of Spring MVC handler mappings used to serve static resources and uses the ResourceResolver chains of the configured ResourceHttpRequestHandlers to make its decisions.

Since:
4.1
Author:
Rossen Stoyanchev, Brian Clozel
  • Field Details

    • logger

      protected final org.apache.commons.logging.Log logger
  • Constructor Details

    • ResourceUrlProvider

      public ResourceUrlProvider()
  • Method Details

    • setApplicationContext

      public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext) throws org.springframework.beans.BeansException
      Specified by:
      setApplicationContext in interface org.springframework.context.ApplicationContextAware
      Throws:
      org.springframework.beans.BeansException
    • setUrlPathHelper

      public void setUrlPathHelper(org.springframework.web.util.UrlPathHelper urlPathHelper)
      Configure a UrlPathHelper to use in getForRequestUrl(jakarta.servlet.http.HttpServletRequest, String) in order to derive the lookup path for a target request URL path.
    • getUrlPathHelper

      public org.springframework.web.util.UrlPathHelper getUrlPathHelper()
      Return the configured UrlPathHelper.
      Since:
      4.2.8
    • setPathMatcher

      public void setPathMatcher(org.springframework.util.PathMatcher pathMatcher)
      Configure a PathMatcher to use when comparing target lookup path against resource mappings.
    • getPathMatcher

      public org.springframework.util.PathMatcher getPathMatcher()
      Return the configured PathMatcher.
    • setHandlerMap

      public void setHandlerMap(@Nullable Map<String,ResourceHttpRequestHandler> handlerMap)
      Manually configure the resource mappings.

      Note: by default resource mappings are auto-detected from the Spring ApplicationContext. However if this property is used, the auto-detection is turned off.

    • getHandlerMap

      public Map<String,ResourceHttpRequestHandler> getHandlerMap()
      Return the resource mappings, either manually configured or auto-detected when the Spring ApplicationContext is refreshed.
    • isAutodetect

      public boolean isAutodetect()
      Return false if resource mappings were manually configured, true otherwise.
    • onApplicationEvent

      public void onApplicationEvent(org.springframework.context.event.ContextRefreshedEvent event)
      Specified by:
      onApplicationEvent in interface org.springframework.context.ApplicationListener<org.springframework.context.event.ContextRefreshedEvent>
    • detectResourceHandlers

      protected void detectResourceHandlers(org.springframework.context.ApplicationContext appContext)
    • getForRequestUrl

      @Nullable public final String getForRequestUrl(HttpServletRequest request, String requestUrl)
      A variation on getForLookupPath(String) that accepts a full request URL path (i.e. including context and servlet path) and returns the full request URL path to expose for public use.
      Parameters:
      request - the current request
      requestUrl - the request URL path to resolve
      Returns:
      the resolved public URL path, or null if unresolved
    • getForLookupPath

      @Nullable public final String getForLookupPath(String lookupPath)
      Compare the given path against configured resource handler mappings and if a match is found use the ResourceResolver chain of the matched ResourceHttpRequestHandler to resolve the URL path to expose for public use.

      It is expected that the given path is what Spring MVC would use for request mapping purposes, i.e. excluding context and servlet path portions.

      If several handler mappings match, the handler used will be the one configured with the most specific pattern.

      Parameters:
      lookupPath - the lookup path to check
      Returns:
      the resolved public URL path, or null if unresolved