public class GroovyWebApplicationContext extends AbstractRefreshableWebApplicationContext implements groovy.lang.GroovyObject
WebApplicationContext
implementation which takes
its configuration from Groovy bean definition scripts and/or XML files, as understood by
a GroovyBeanDefinitionReader
.
This is essentially the equivalent of
GenericGroovyApplicationContext
for a web environment.
By default, the configuration will be taken from "/WEB-INF/applicationContext.groovy" for the root context, and "/WEB-INF/test-servlet.groovy" for a context with the namespace "test-servlet" (like for a DispatcherServlet instance with the servlet-name "test").
The config location defaults can be overridden via the "contextConfigLocation"
context-param of ContextLoader
and servlet
init-param of FrameworkServlet
. Config locations
can either denote concrete files like "/WEB-INF/context.groovy" or Ant-style patterns
like "/WEB-INF/*-context.groovy" (see PathMatcher
javadoc for pattern details). Note that ".xml" files will be parsed as XML content;
all other kinds of resources will be parsed as Groovy scripts.
Note: In case of multiple config locations, later bean definitions will override ones defined in earlier loaded files. This can be leveraged to deliberately override certain bean definitions via an extra Groovy script.
For a WebApplicationContext that reads in a different bean definition format,
create an analogous subclass of AbstractRefreshableWebApplicationContext
.
Such a context implementation can be specified as "contextClass" context-param
for ContextLoader or "contextClass" init-param for FrameworkServlet.
AbstractRefreshableWebApplicationContext.setNamespace(java.lang.String)
,
AbstractRefreshableConfigApplicationContext.setConfigLocations(java.lang.String...)
,
GroovyBeanDefinitionReader
,
ContextLoader.initWebApplicationContext(javax.servlet.ServletContext)
,
FrameworkServlet.initWebApplicationContext()
DefaultResourceLoader.ClassPathContextResource
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
DEFAULT_CONFIG_LOCATION
Default config location for the root context.
|
static java.lang.String |
DEFAULT_CONFIG_LOCATION_PREFIX
Default prefix for building a config location for a namespace.
|
static java.lang.String |
DEFAULT_CONFIG_LOCATION_SUFFIX
Default suffix for building a config location for a namespace.
|
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME
CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAME
FACTORY_BEAN_PREFIX
CLASSPATH_ALL_URL_PREFIX
CLASSPATH_URL_PREFIX
Constructor and Description |
---|
GroovyWebApplicationContext() |
Modifier and Type | Method and Description |
---|---|
protected java.lang.String[] |
getDefaultConfigLocations()
The default location for the root context is "/WEB-INF/applicationContext.groovy",
and "/WEB-INF/test-servlet.groovy" for a context with the namespace "test-servlet"
(like for a DispatcherServlet instance with the servlet-name "test").
|
groovy.lang.MetaClass |
getMetaClass() |
java.lang.Object |
getProperty(java.lang.String property) |
protected void |
initBeanDefinitionReader(GroovyBeanDefinitionReader beanDefinitionReader)
Initialize the bean definition reader used for loading the bean
definitions of this context.
|
java.lang.Object |
invokeMethod(java.lang.String name,
java.lang.Object args) |
protected void |
loadBeanDefinitions(DefaultListableBeanFactory beanFactory)
Loads the bean definitions via an GroovyBeanDefinitionReader.
|
protected void |
loadBeanDefinitions(GroovyBeanDefinitionReader reader)
Load the bean definitions with the given GroovyBeanDefinitionReader.
|
void |
setMetaClass(groovy.lang.MetaClass metaClass) |
void |
setProperty(java.lang.String property,
java.lang.Object newValue) |
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, postProcessBeanFactory, setNamespace, setServletConfig, setServletContext
afterPropertiesSet, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId
assertBeanFactoryActive, cancelRefresh, closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences
addApplicationListener, addBeanFactoryPostProcessor, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResources, getStartupDate, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, resetCommonCaches, setDisplayName, setEnvironment, setParent, start, stop, toString
addProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResource, getResourceCache, setClassLoader
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
setConfigLocation, setConfigLocations
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getBeanFactory, getEnvironment, isActive, refresh, registerShutdownHook, setEnvironment, setId, setParent
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation
containsLocalBean, getParentBeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch
getMessage, getMessage, getMessage
publishEvent, publishEvent
getResources
getClassLoader, getResource
public static final java.lang.String DEFAULT_CONFIG_LOCATION
public static final java.lang.String DEFAULT_CONFIG_LOCATION_PREFIX
public static final java.lang.String DEFAULT_CONFIG_LOCATION_SUFFIX
protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws BeansException, java.io.IOException
loadBeanDefinitions
in class AbstractRefreshableApplicationContext
beanFactory
- the bean factory to load bean definitions intoBeansException
- if parsing of the bean definitions failedjava.io.IOException
- if loading of bean definition files failedGroovyBeanDefinitionReader
,
initBeanDefinitionReader(org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader)
,
loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)
protected void initBeanDefinitionReader(GroovyBeanDefinitionReader beanDefinitionReader)
Can be overridden in subclasses.
beanDefinitionReader
- the bean definition reader used by this contextprotected void loadBeanDefinitions(GroovyBeanDefinitionReader reader) throws java.io.IOException
The lifecycle of the bean factory is handled by the refreshBeanFactory method; therefore this method is just supposed to load and/or register bean definitions.
Delegates to a ResourcePatternResolver for resolving location patterns into Resource instances.
java.io.IOException
- if the required Groovy script or XML file isn't foundAbstractRefreshableApplicationContext.refreshBeanFactory()
,
AbstractRefreshableWebApplicationContext.getConfigLocations()
,
AbstractApplicationContext.getResources(java.lang.String)
,
AbstractRefreshableWebApplicationContext.getResourcePatternResolver()
protected java.lang.String[] getDefaultConfigLocations()
getDefaultConfigLocations
in class AbstractRefreshableConfigApplicationContext
AbstractRefreshableConfigApplicationContext.setConfigLocations(java.lang.String...)
public void setMetaClass(groovy.lang.MetaClass metaClass)
setMetaClass
in interface groovy.lang.GroovyObject
public groovy.lang.MetaClass getMetaClass()
getMetaClass
in interface groovy.lang.GroovyObject
public java.lang.Object invokeMethod(java.lang.String name, java.lang.Object args)
invokeMethod
in interface groovy.lang.GroovyObject
public void setProperty(java.lang.String property, java.lang.Object newValue)
setProperty
in interface groovy.lang.GroovyObject
@Nullable public java.lang.Object getProperty(java.lang.String property)
getProperty
in interface groovy.lang.GroovyObject