Package org.springframework.web.servlet.resource

# 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 `ResourceHttpRequestHandler`s to make its decisions.

Since:
  4.1
Author:
  Rossen Stoyanchev, Brian Clozel

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`

## Constructor Summary

Constructors
Constructor
Description
`ResourceUrlProvider()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`detectResourceHandlers(org.springframework.context.ApplicationContext appContext)`
`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.
`final String`
`getForRequestUrl(HttpServletRequest request, String requestUrl)`
A variation on `getForLookupPath(String)` that accepts a full request URL path (i.e.
`Map<String,ResourceHttpRequestHandler>`
`getHandlerMap()`
Return the resource mappings, either manually configured or auto-detected when the Spring `ApplicationContext` is refreshed.
`org.springframework.util.PathMatcher`
`getPathMatcher()`
Return the configured `PathMatcher`.
`org.springframework.web.util.UrlPathHelper`
`getUrlPathHelper()`
Return the configured `UrlPathHelper`.
`boolean`
`isAutodetect()`
Return `false` if resource mappings were manually configured, `true` otherwise.
`void`
`onApplicationEvent(org.springframework.context.event.ContextRefreshedEvent event)`
`void`
`setApplicationContext(org.springframework.context.ApplicationContext applicationContext)`
`void`
`setHandlerMap(Map<String,ResourceHttpRequestHandler> handlerMap)`
Manually configure the resource mappings.
`void`
`setPathMatcher(org.springframework.util.PathMatcher pathMatcher)`
Configure a `PathMatcher` to use when comparing target lookup path against resource mappings.
`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.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.context.ApplicationListener

`supportsAsyncExecution`

## 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