Class ResourceUrlProvider
- All Implemented Interfaces:
EventListener
,Aware
,ApplicationContextAware
,ApplicationListener<ContextRefreshedEvent>
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
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
detectResourceHandlers
(ApplicationContext appContext) final String
getForLookupPath
(String lookupPath) Compare the given path against configured resource handler mappings and if a match is found use theResourceResolver
chain of the matchedResourceHttpRequestHandler
to resolve the URL path to expose for public use.final String
getForRequestUrl
(HttpServletRequest request, String requestUrl) A variation ongetForLookupPath(String)
that accepts a full request URL path (i.e.Return the resource mappings, either manually configured or auto-detected when the SpringApplicationContext
is refreshed.Return the configuredPathMatcher
.Return the configuredUrlPathHelper
.boolean
Returnfalse
if resource mappings were manually configured,true
otherwise.void
Handle an application event.void
setApplicationContext
(ApplicationContext applicationContext) Set the ApplicationContext that this object runs in.void
setHandlerMap
(Map<String, ResourceHttpRequestHandler> handlerMap) Manually configure the resource mappings.void
setPathMatcher
(PathMatcher pathMatcher) Configure aPathMatcher
to use when comparing target lookup path against resource mappings.void
setUrlPathHelper
(UrlPathHelper urlPathHelper) Configure aUrlPathHelper
to use ingetForRequestUrl(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
-
-
Constructor Details
-
ResourceUrlProvider
public ResourceUrlProvider()
-
-
Method Details
-
setApplicationContext
Description copied from interface:ApplicationContextAware
Set the ApplicationContext that this object runs in. Normally this call will be used to initialize the object.Invoked after population of normal bean properties but before an init callback such as
InitializingBean.afterPropertiesSet()
or a custom init-method. Invoked afterResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader)
,ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher)
andMessageSourceAware
, if applicable.- Specified by:
setApplicationContext
in interfaceApplicationContextAware
- Parameters:
applicationContext
- the ApplicationContext object to be used by this object- Throws:
ApplicationContextException
- in case of context initialization errorsBeansException
- if thrown by application context methods- See Also:
-
setUrlPathHelper
Configure aUrlPathHelper
to use ingetForRequestUrl(jakarta.servlet.http.HttpServletRequest, String)
in order to derive the lookup path for a target request URL path. -
getUrlPathHelper
Return the configuredUrlPathHelper
.- Since:
- 4.2.8
-
setPathMatcher
Configure aPathMatcher
to use when comparing target lookup path against resource mappings. -
getPathMatcher
Return the configuredPathMatcher
. -
setHandlerMap
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
Return the resource mappings, either manually configured or auto-detected when the SpringApplicationContext
is refreshed. -
isAutodetect
public boolean isAutodetect()Returnfalse
if resource mappings were manually configured,true
otherwise. -
onApplicationEvent
Description copied from interface:ApplicationListener
Handle an application event.- Specified by:
onApplicationEvent
in interfaceApplicationListener<ContextRefreshedEvent>
- Parameters:
event
- the event to respond to
-
detectResourceHandlers
-
getForRequestUrl
A variation ongetForLookupPath(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 requestrequestUrl
- the request URL path to resolve- Returns:
- the resolved public URL path, or
null
if unresolved
-
getForLookupPath
Compare the given path against configured resource handler mappings and if a match is found use theResourceResolver
chain of the matchedResourceHttpRequestHandler
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
-