Class GenericGroovyApplicationContext
- java.lang.Object
- org.springframework.core.io.DefaultResourceLoader
- org.springframework.context.support.AbstractApplicationContext
- org.springframework.context.support.GenericApplicationContext
- org.springframework.context.support.GenericGroovyApplicationContext
- All Implemented Interfaces:
groovy.lang.GroovyObject
,Closeable
,AutoCloseable
,BeanFactory
,DisposableBean
,HierarchicalBeanFactory
,ListableBeanFactory
,BeanDefinitionRegistry
,ApplicationContext
,ApplicationEventPublisher
,ConfigurableApplicationContext
,Lifecycle
,MessageSource
,AliasRegistry
,EnvironmentCapable
,ResourceLoader
,ResourcePatternResolver
public class GenericGroovyApplicationContext extends GenericApplicationContext implements groovy.lang.GroovyObject
AnApplicationContext
implementation that extendsGenericApplicationContext
and implementsGroovyObject
such that beans can be retrieved with the dot de-reference syntax instead of usingAbstractApplicationContext.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.
- Since:
- 4.0
- Author:
- Juergen Hoeller, Jeff Brown
- See Also:
GroovyBeanDefinitionReader
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader
DefaultResourceLoader.ClassPathContextResource
Field Summary
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
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.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 GenericGroovyApplicationContext()
GenericGroovyApplicationContext(Class<?> relativeClass, String... resourceNames)
Create a new GenericGroovyApplicationContext, loading bean definitions from the given resource locations 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.GenericGroovyApplicationContext(Resource... resources)
Create a new GenericGroovyApplicationContext, loading bean definitions from the given resources and automatically refreshing the context.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description groovy.lang.MetaClass
getMetaClass()
Object
getProperty(String property)
GroovyBeanDefinitionReader
getReader()
Exposes the underlyingGroovyBeanDefinitionReader
for convenient access to theloadBeanDefinition
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(String... resourceLocations)
Load bean definitions from the given Groovy scripts or XML files.void
load(Resource... resources)
Load bean definitions from the given Groovy scripts or XML files.void
setEnvironment(ConfigurableEnvironment environment)
Delegates the given environment to underlyingGroovyBeanDefinitionReader
.void
setMetaClass(groovy.lang.MetaClass metaClass)
void
setProperty(String property, Object newValue)
Methods inherited from class org.springframework.context.support.GenericApplicationContext
cancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, registerAlias, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setClassLoader, setParent, setResourceLoader
Methods inherited from class 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
Methods inherited from class org.springframework.core.io.DefaultResourceLoader
addProtocolResolver, getProtocolResolvers, getResourceByPath
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.core.AliasRegistry
getAliases
Methods inherited from interface org.springframework.beans.factory.support.BeanDefinitionRegistry
containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNames
Methods inherited from interface org.springframework.context.ConfigurableApplicationContext
addProtocolResolver
Constructor Detail
GenericGroovyApplicationContext
public GenericGroovyApplicationContext()
GenericGroovyApplicationContext
public GenericGroovyApplicationContext(Resource... resources)
Create a new GenericGroovyApplicationContext, loading bean definitions from the given resources and automatically refreshing the context.- Parameters:
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.- Parameters:
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.- Parameters:
relativeClass
- class whose package will be used as a prefix when loading each specified resource nameresourceNames
- relatively-qualified names of resources to load
Method Detail
getReader
public final GroovyBeanDefinitionReader getReader()
Exposes the underlyingGroovyBeanDefinitionReader
for convenient access to theloadBeanDefinition
methods on it as well as the ability to specify an inline Groovy bean definition closure.
setEnvironment
public void setEnvironment(ConfigurableEnvironment environment)
Delegates the given environment to underlyingGroovyBeanDefinitionReader
. Should be called before any call to#load
.- Specified by:
setEnvironment
in interfaceConfigurableApplicationContext
- Overrides:
setEnvironment
in classAbstractApplicationContext
- Parameters:
environment
- the new environment- See Also:
AbstractApplicationContext.createEnvironment()
load
public void load(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.
- Parameters:
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.
- Parameters:
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.
- Parameters:
relativeClass
- class whose package will be used as a prefix when loading each specified resource nameresourceNames
- relatively-qualified names of resources to load
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