Class GroovyWebApplicationContext
- java.lang.Object
- org.springframework.core.io.DefaultResourceLoader
- org.springframework.context.support.AbstractApplicationContext
- org.springframework.context.support.AbstractRefreshableApplicationContext
- org.springframework.context.support.AbstractRefreshableConfigApplicationContext
- org.springframework.web.context.support.AbstractRefreshableWebApplicationContext
- org.springframework.web.context.support.GroovyWebApplicationContext
- All Implemented Interfaces:
groovy.lang.GroovyObject
,Closeable
,AutoCloseable
,Aware
,BeanFactory
,BeanNameAware
,DisposableBean
,HierarchicalBeanFactory
,InitializingBean
,ListableBeanFactory
,ApplicationContext
,ApplicationEventPublisher
,ConfigurableApplicationContext
,Lifecycle
,MessageSource
,EnvironmentCapable
,ResourceLoader
,ResourcePatternResolver
,ThemeSource
,ConfigurableWebApplicationContext
,WebApplicationContext
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 aGroovyBeanDefinitionReader
. This is essentially the equivalent ofGenericGroovyApplicationContext
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 ofFrameworkServlet
. Config locations can either denote concrete files like "/WEB-INF/context.groovy" or Ant-style patterns like "/WEB-INF/*-context.groovy" (seePathMatcher
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.- Since:
- 4.1
- Author:
- Juergen Hoeller
- See Also:
AbstractRefreshableWebApplicationContext.setNamespace(java.lang.String)
,AbstractRefreshableConfigApplicationContext.setConfigLocations(java.lang.String...)
,GroovyBeanDefinitionReader
,ContextLoader.initWebApplicationContext(javax.servlet.ServletContext)
,FrameworkServlet.initWebApplicationContext()
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader
DefaultResourceLoader.ClassPathContextResource
Field Summary
Fields Modifier and Type Field Description static String
DEFAULT_CONFIG_LOCATION
Default config location for the root contextstatic String
DEFAULT_CONFIG_LOCATION_PREFIX
Default prefix for building a config location for a namespacestatic String
DEFAULT_CONFIG_LOCATION_SUFFIX
Default suffix for building a config location for a namespaceFields inherited from class org.springframework.context.support.AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
Fields inherited from interface org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIX
Fields inherited from interface org.springframework.context.ConfigurableApplicationContext
CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAME
Fields inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME
Fields inherited from interface org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIX
Fields inherited from interface org.springframework.core.io.support.ResourcePatternResolver
CLASSPATH_ALL_URL_PREFIX
Fields inherited from interface org.springframework.web.context.WebApplicationContext
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME
Constructor Summary
Constructors Constructor Description GroovyWebApplicationContext()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected 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()
Object
getProperty(String property)
protected void
initBeanDefinitionReader(GroovyBeanDefinitionReader beanDefinitionReader)
Initialize the bean definition reader used for loading the bean definitions of this context.Object
invokeMethod(String name, Object args)
protected void
loadBeanDefinitions(GroovyBeanDefinitionReader reader)
Load the bean definitions with the given GroovyBeanDefinitionReader.protected void
loadBeanDefinitions(DefaultListableBeanFactory beanFactory)
Loads the bean definitions via an GroovyBeanDefinitionReader.void
setMetaClass(groovy.lang.MetaClass metaClass)
void
setProperty(String property, Object newValue)
Methods inherited from class org.springframework.web.context.support.AbstractRefreshableWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, postProcessBeanFactory, setNamespace, setServletConfig, setServletContext
Methods inherited from class org.springframework.context.support.AbstractRefreshableConfigApplicationContext
afterPropertiesSet, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId
Methods inherited from class org.springframework.context.support.AbstractRefreshableApplicationContext
assertBeanFactoryActive, cancelRefresh, closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences
Methods inherited from class org.springframework.context.support.AbstractApplicationContext
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, 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
Methods inherited from class org.springframework.core.io.DefaultResourceLoader
addProtocolResolver, getClassLoader, getProtocolResolvers, getResource, setClassLoader
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.context.ApplicationContext
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
Methods inherited from interface org.springframework.context.ApplicationEventPublisher
publishEvent, publishEvent
Methods inherited from interface org.springframework.beans.factory.BeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch
Methods inherited from interface org.springframework.context.ConfigurableApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getBeanFactory, getEnvironment, isActive, refresh, registerShutdownHook, setEnvironment, setId, setParent
Methods inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext
setConfigLocation, setConfigLocations
Methods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactory
containsLocalBean, getParentBeanFactory
Methods inherited from interface org.springframework.beans.factory.ListableBeanFactory
containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation
Methods inherited from interface org.springframework.context.MessageSource
getMessage, getMessage, getMessage
Methods inherited from interface org.springframework.core.io.ResourceLoader
getClassLoader, getResource
Methods inherited from interface org.springframework.core.io.support.ResourcePatternResolver
getResources
Field Detail
DEFAULT_CONFIG_LOCATION
public static final String DEFAULT_CONFIG_LOCATION
Default config location for the root context- See Also:
- Constant Field Values
DEFAULT_CONFIG_LOCATION_PREFIX
public static final String DEFAULT_CONFIG_LOCATION_PREFIX
Default prefix for building a config location for a namespace- See Also:
- Constant Field Values
DEFAULT_CONFIG_LOCATION_SUFFIX
public static final String DEFAULT_CONFIG_LOCATION_SUFFIX
Default suffix for building a config location for a namespace- See Also:
- Constant Field Values
Constructor Detail
GroovyWebApplicationContext
public GroovyWebApplicationContext()
Method Detail
loadBeanDefinitions
protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws BeansException, IOException
Loads the bean definitions via an GroovyBeanDefinitionReader.- Specified by:
loadBeanDefinitions
in classAbstractRefreshableApplicationContext
- Parameters:
beanFactory
- the bean factory to load bean definitions into- Throws:
BeansException
- if parsing of the bean definitions failedIOException
- if loading of bean definition files failed- See Also:
GroovyBeanDefinitionReader
,initBeanDefinitionReader(org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader)
,loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)
initBeanDefinitionReader
protected void initBeanDefinitionReader(GroovyBeanDefinitionReader beanDefinitionReader)
Initialize the bean definition reader used for loading the bean definitions of this context. Default implementation is empty.Can be overridden in subclasses.
- Parameters:
beanDefinitionReader
- the bean definition reader used by this context
loadBeanDefinitions
protected void loadBeanDefinitions(GroovyBeanDefinitionReader reader) throws IOException
Load the bean definitions with the given GroovyBeanDefinitionReader.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.
- Throws:
IOException
- if the required Groovy script or XML file isn't found- See Also:
AbstractRefreshableApplicationContext.refreshBeanFactory()
,AbstractRefreshableWebApplicationContext.getConfigLocations()
,AbstractApplicationContext.getResources(java.lang.String)
,AbstractRefreshableWebApplicationContext.getResourcePatternResolver()
getDefaultConfigLocations
protected 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").- Overrides:
getDefaultConfigLocations
in classAbstractRefreshableConfigApplicationContext
- Returns:
- an array of default config locations, if any
- See Also:
AbstractRefreshableConfigApplicationContext.setConfigLocations(java.lang.String...)
setMetaClass
public void setMetaClass(groovy.lang.MetaClass metaClass)
- Specified by:
setMetaClass
in interfacegroovy.lang.GroovyObject
getMetaClass
public groovy.lang.MetaClass getMetaClass()
- Specified by:
getMetaClass
in interfacegroovy.lang.GroovyObject
invokeMethod
public Object invokeMethod(String name, Object args)
- Specified by:
invokeMethod
in interfacegroovy.lang.GroovyObject
setProperty
public void setProperty(String property, Object newValue)
- Specified by:
setProperty
in interfacegroovy.lang.GroovyObject
getProperty
public Object getProperty(String property)
- Specified by:
getProperty
in interfacegroovy.lang.GroovyObject