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, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactory, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.HierarchicalBeanFactory, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.ListableBeanFactory, org.springframework.context.ApplicationContext, org.springframework.context.ApplicationEventPublisher, org.springframework.context.ConfigurableApplicationContext, org.springframework.context.Lifecycle, org.springframework.context.MessageSource, org.springframework.core.env.EnvironmentCapable, org.springframework.core.io.ResourceLoader, org.springframework.core.io.support.ResourcePatternResolver, org.springframework.ui.context.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 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 org.springframework.web.servlet.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.

Since:
4.1
Author:
Juergen Hoeller
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader

    org.springframework.core.io.DefaultResourceLoader.ClassPathContextResource
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    Default config location for the root context.
    static final String
    Default prefix for building a config location for a namespace.
    static final String
    Default suffix for building a config location for a namespace.

    Fields 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

    APPLICATION_STARTUP_BEAN_NAME, CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SHUTDOWN_HOOK_THREAD_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
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected String[]
    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
     
    getProperty(String property)
     
    protected void
    initBeanDefinitionReader(org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader beanDefinitionReader)
    Initialize the bean definition reader used for loading the bean definitions of this context.
    invokeMethod(String name, Object args)
     
    protected void
    loadBeanDefinitions(org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader reader)
    Load the bean definitions with the given GroovyBeanDefinitionReader.
    protected void
    loadBeanDefinitions(org.springframework.beans.factory.support.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.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, destroyBeans, doClose, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationStartup, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResources, getStartupDate, getType, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, removeApplicationListener, resetCommonCaches, setApplicationStartup, setDisplayName, setEnvironment, setParent, start, stop, toString

    Methods inherited from class org.springframework.core.io.DefaultResourceLoader

    addProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResource, getResourceCache, 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, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch

    Methods inherited from interface org.springframework.context.ConfigurableApplicationContext

    addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getApplicationStartup, getBeanFactory, getEnvironment, isActive, refresh, registerShutdownHook, removeApplicationListener, setApplicationStartup, setClassLoader, 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.context.Lifecycle

    isRunning, start, stop

    Methods inherited from interface org.springframework.beans.factory.ListableBeanFactory

    containsBeanDefinition, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, 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 Details

    • DEFAULT_CONFIG_LOCATION

      public static final String DEFAULT_CONFIG_LOCATION
      Default config location for the root context.
      See Also:
    • DEFAULT_CONFIG_LOCATION_PREFIX

      public static final String DEFAULT_CONFIG_LOCATION_PREFIX
      Default prefix for building a config location for a namespace.
      See Also:
    • DEFAULT_CONFIG_LOCATION_SUFFIX

      public static final String DEFAULT_CONFIG_LOCATION_SUFFIX
      Default suffix for building a config location for a namespace.
      See Also:
  • Constructor Details

    • GroovyWebApplicationContext

      public GroovyWebApplicationContext()
  • Method Details

    • loadBeanDefinitions

      protected void loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory beanFactory) throws org.springframework.beans.BeansException, IOException
      Loads the bean definitions via an GroovyBeanDefinitionReader.
      Specified by:
      loadBeanDefinitions in class org.springframework.context.support.AbstractRefreshableApplicationContext
      Throws:
      org.springframework.beans.BeansException
      IOException
      See Also:
    • initBeanDefinitionReader

      protected void initBeanDefinitionReader(org.springframework.beans.factory.groovy.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(org.springframework.beans.factory.groovy.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:
    • 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 class org.springframework.context.support.AbstractRefreshableConfigApplicationContext
    • setMetaClass

      public void setMetaClass(groovy.lang.MetaClass metaClass)
      Specified by:
      setMetaClass in interface groovy.lang.GroovyObject
    • getMetaClass

      public groovy.lang.MetaClass getMetaClass()
      Specified by:
      getMetaClass in interface groovy.lang.GroovyObject
    • invokeMethod

      public Object invokeMethod(String name, Object args)
      Specified by:
      invokeMethod in interface groovy.lang.GroovyObject
    • setProperty

      public void setProperty(String property, Object newValue)
      Specified by:
      setProperty in interface groovy.lang.GroovyObject
    • getProperty

      @Nullable public Object getProperty(String property)
      Specified by:
      getProperty in interface groovy.lang.GroovyObject