org.springframework.context.support

## 类 GenericGroovyApplicationContext

- java.lang.Object
- - org.springframework.core.io.DefaultResourceLoader
  - - org.springframework.context.support.AbstractApplicationContext
    - - org.springframework.context.support.GenericApplicationContext
      - - org.springframework.context.support.GenericGroovyApplicationContext

- 所有已实现的接口:
    groovy.lang.GroovyObject, Closeable, AutoCloseable, org.springframework.beans.factory.BeanFactory, org.springframework.beans.factory.HierarchicalBeanFactory, org.springframework.beans.factory.ListableBeanFactory, org.springframework.beans.factory.support.BeanDefinitionRegistry, ApplicationContext, ApplicationEventPublisher, ConfigurableApplicationContext, Lifecycle, MessageSource, org.springframework.core.AliasRegistry, org.springframework.core.env.EnvironmentCapable, org.springframework.core.io.ResourceLoader, org.springframework.core.io.support.ResourcePatternResolver

      public class GenericGroovyApplicationContext
      extends GenericApplicationContext
      implements groovy.lang.GroovyObject

  An `ApplicationContext` implementation that extends `GenericApplicationContext` and implements `GroovyObject` such that beans can be retrieved with the dot de-reference syntax instead of using `AbstractApplicationContext.getBean(java.lang.String)`.

  Consider this as the equivalent of `GenericXmlApplicationContext` for Groovy bean definitions, or even an upgrade thereof since it seamlessly understands XML bean definition files as well. The main difference is that, within a Groovy script, the context can be used with an inline bean definition closure as follows:

       import org.hibernate.SessionFactory
       import org.apache.commons.dbcp.BasicDataSource

       def context = new GenericGroovyApplicationContext()
       context.reader.beans {
           dataSource(BasicDataSource) {                  // <--- invokeMethod
               driverClassName = "org.hsqldb.jdbcDriver"
               url = "jdbc:hsqldb:mem:grailsDB"
               username = "sa"                            // <-- setProperty
               password = ""
               settings = [mynew:"setting"]
           }
           sessionFactory(SessionFactory) {
               dataSource = dataSource                    // <-- getProperty for retrieving references
           }
           myService(MyService) {
               nestedBean = { AnotherBean bean ->         // <-- setProperty with closure for nested bean
                   dataSource = dataSource
               }
           }
       }
       context.refresh()

  Alternatively, load a Groovy bean definition script like the following from an external resource (e.g. an "applicationContext.groovy" file):

       import org.hibernate.SessionFactory
       import org.apache.commons.dbcp.BasicDataSource

       beans {
           dataSource(BasicDataSource) {
               driverClassName = "org.hsqldb.jdbcDriver"
               url = "jdbc:hsqldb:mem:grailsDB"
               username = "sa"
               password = ""
               settings = [mynew:"setting"]
           }
           sessionFactory(SessionFactory) {
               dataSource = dataSource
           }
           myService(MyService) {
               nestedBean = { AnotherBean bean ->
                   dataSource = dataSource
               }
           }
       }

  With the following Java code creating the `GenericGroovyApplicationContext` (potentially using Ant-style '*'/'**' location patterns):

       GenericGroovyApplicationContext context = new GenericGroovyApplicationContext();
       context.load("org/myapp/applicationContext.groovy");
       context.refresh();

  Or even more concise, provided that no extra configuration is needed:

       ApplicationContext context = new GenericGroovyApplicationContext("org/myapp/applicationContext.groovy");

  This application context also understands XML bean definition files, allowing for seamless mixing and matching with Groovy bean definition files. ".xml" files will be parsed as XML content; all other kinds of resources will be parsed as Groovy scripts.

  从以下版本开始:
    4.0
  作者:
    Juergen Hoeller, Jeff Brown
  另请参阅:
    `GroovyBeanDefinitionReader`

- - ### 嵌套类概要

    - ### 从类继承的嵌套类/接口 org.springframework.core.io.DefaultResourceLoader

      `org.springframework.core.io.DefaultResourceLoader.ClassPathContextResource`

  - ### 字段概要

    - ### 从类继承的字段 org.springframework.context.support.AbstractApplicationContext

      `APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME`

    - ### 从接口继承的字段 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`

    - ### 从接口继承的字段 org.springframework.beans.factory.BeanFactory

      `FACTORY_BEAN_PREFIX`

    - ### 从接口继承的字段 org.springframework.core.io.support.ResourcePatternResolver

      `CLASSPATH_ALL_URL_PREFIX`

    - ### 从接口继承的字段 org.springframework.core.io.ResourceLoader

      `CLASSPATH_URL_PREFIX`

  - ### 构造器概要

    构造器
    构造器和说明
    `GenericGroovyApplicationContext()` Create a new GenericGroovyApplicationContext that needs to be `loaded` and then manually `refreshed`.
    `GenericGroovyApplicationContext(Class<?> relativeClass, String... resourceNames)` Create a new GenericGroovyApplicationContext, loading bean definitions from the given resource locations and automatically refreshing the context.
    `GenericGroovyApplicationContext(org.springframework.core.io.Resource... resources)` Create a new GenericGroovyApplicationContext, loading bean definitions from the given resources and automatically refreshing the context.
    `GenericGroovyApplicationContext(String... resourceLocations)` Create a new GenericGroovyApplicationContext, loading bean definitions from the given resource locations and automatically refreshing the context.

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `groovy.lang.MetaClass` | `getMetaClass()`
    `Object` | `getProperty(String property)`
    `org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader` | `getReader()` Exposes the underlying `GroovyBeanDefinitionReader` for convenient access to the `loadBeanDefinition` methods on it as well as the ability to specify an inline Groovy bean definition closure.
    `Object` | `invokeMethod(String name, Object args)`
    `void` | `load(Class<?> relativeClass, String... resourceNames)` Load bean definitions from the given Groovy scripts or XML files.
    `void` | `load(org.springframework.core.io.Resource... resources)` Load bean definitions from the given Groovy scripts or XML files.
    `void` | `load(String... resourceLocations)` Load bean definitions from the given Groovy scripts or XML files.
    `void` | `setEnvironment(org.springframework.core.env.ConfigurableEnvironment environment)` Delegates the given environment to underlying `GroovyBeanDefinitionReader`.
    `void` | `setMetaClass(groovy.lang.MetaClass metaClass)`
    `void` | `setProperty(String property, Object newValue)`

    - ### 从类继承的方法 org.springframework.context.support.GenericApplicationContext

      `cancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, registerAlias, registerBean, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setClassLoader, setParent, setResourceLoader`

    - ### 从类继承的方法 org.springframework.context.support.AbstractApplicationContext

      `addApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, createEnvironment, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationName, 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, getResourcePatternResolver, getStartupDate, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, initPropertySources, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, onRefresh, postProcessBeanFactory, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, resetCommonCaches, setDisplayName, setId, start, stop, toString`

    - ### 从类继承的方法 org.springframework.core.io.DefaultResourceLoader

      `addProtocolResolver, clearResourceCaches, getProtocolResolvers, getResourceByPath, getResourceCache`

    - ### 从类继承的方法 java.lang.Object

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

    - ### 从接口继承的方法 org.springframework.beans.factory.support.BeanDefinitionRegistry

      `containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNames`

    - ### 从接口继承的方法 org.springframework.core.AliasRegistry

      `getAliases`

    - ### 从接口继承的方法 org.springframework.context.ConfigurableApplicationContext

      `addProtocolResolver`

- - ### 构造器详细资料

    - #### GenericGroovyApplicationContext

          public GenericGroovyApplicationContext()

      Create a new GenericGroovyApplicationContext that needs to be `loaded` and then manually `refreshed`.

    - #### GenericGroovyApplicationContext

          public GenericGroovyApplicationContext(org.springframework.core.io.Resource... resources)

      Create a new GenericGroovyApplicationContext, loading bean definitions from the given resources and automatically refreshing the context.
      参数:
        `resources` - the resources to load from

    - #### GenericGroovyApplicationContext

          public GenericGroovyApplicationContext(String... resourceLocations)

      Create a new GenericGroovyApplicationContext, loading bean definitions from the given resource locations and automatically refreshing the context.
      参数:
        `resourceLocations` - the resources to load from

    - #### GenericGroovyApplicationContext

          public GenericGroovyApplicationContext(Class<?> relativeClass,
                                                 String... resourceNames)

      Create a new GenericGroovyApplicationContext, loading bean definitions from the given resource locations and automatically refreshing the context.
      参数:
        `relativeClass` - class whose package will be used as a prefix when loading each specified resource name
        `resourceNames` - relatively-qualified names of resources to load

  - ### 方法详细资料

    - #### getReader

          public final org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader getReader()

      Exposes the underlying `GroovyBeanDefinitionReader` for convenient access to the `loadBeanDefinition` methods on it as well as the ability to specify an inline Groovy bean definition closure.
      另请参阅:
        `AbstractBeanDefinitionReader.loadBeanDefinitions(org.springframework.core.io.Resource...)`, `AbstractBeanDefinitionReader.loadBeanDefinitions(String...)`

    - #### setEnvironment

          public void setEnvironment(org.springframework.core.env.ConfigurableEnvironment environment)

      Delegates the given environment to underlying `GroovyBeanDefinitionReader`. Should be called before any call to `#load`.
      指定者:
        `setEnvironment` 在接口中 `ConfigurableApplicationContext`
      覆盖:
        `setEnvironment` 在类中 `AbstractApplicationContext`
      参数:
        `environment` - the new environment
      另请参阅:
        `AbstractApplicationContext.createEnvironment()`

    - #### load

          public void load(org.springframework.core.io.Resource... resources)

      Load bean definitions from the given Groovy scripts or XML files.

      Note that ".xml" files will be parsed as XML content; all other kinds of resources will be parsed as Groovy scripts.

      参数:
        `resources` - one or more resources to load from

    - #### load

          public void load(String... resourceLocations)

      Load bean definitions from the given Groovy scripts or XML files.

      Note that ".xml" files will be parsed as XML content; all other kinds of resources will be parsed as Groovy scripts.

      参数:
        `resourceLocations` - one or more resource locations to load from

    - #### load

          public void load(Class<?> relativeClass,
                           String... resourceNames)

      Load bean definitions from the given Groovy scripts or XML files.

      Note that ".xml" files will be parsed as XML content; all other kinds of resources will be parsed as Groovy scripts.

      参数:
        `relativeClass` - class whose package will be used as a prefix when loading each specified resource name
        `resourceNames` - relatively-qualified names of resources to load

    - #### setMetaClass

          public void setMetaClass(groovy.lang.MetaClass metaClass)

      指定者:
        `setMetaClass` 在接口中 `groovy.lang.GroovyObject`

    - #### getMetaClass

          public groovy.lang.MetaClass getMetaClass()

      指定者:
        `getMetaClass` 在接口中 `groovy.lang.GroovyObject`

    - #### invokeMethod

          public Object invokeMethod(String name,
                                     Object args)

      指定者:
        `invokeMethod` 在接口中 `groovy.lang.GroovyObject`

    - #### setProperty

          public void setProperty(String property,
                                  Object newValue)

      指定者:
        `setProperty` 在接口中 `groovy.lang.GroovyObject`

    - #### getProperty

          @Nullable
          public Object getProperty(String property)

      指定者:
        `getProperty` 在接口中 `groovy.lang.GroovyObject`