public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader implements groovy.lang.GroovyObject
This bean definition reader also understands XML bean definition files, allowing for seamless mixing and matching with Groovy bean definition files.
Typically applied to a
DefaultListableBeanFactory
or a org.springframework.context.support.GenericApplicationContext,
but can be used against any BeanDefinitionRegistry implementation.
import org.hibernate.SessionFactory
import org.apache.commons.dbcp.BasicDataSource
def reader = new GroovyBeanDefinitionReader(myApplicationContext)
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
}
}
}
You can also load resources containing beans defined in a Groovy script using
either the AbstractBeanDefinitionReader.loadBeanDefinitions(Resource...) or
AbstractBeanDefinitionReader.loadBeanDefinitions(String...) method, with a script looking similar to
the following.
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
}
}
}BeanDefinitionRegistry,
DefaultListableBeanFactory,
org.springframework.context.support.GenericApplicationContext,
org.springframework.context.support.GenericGroovyApplicationContextlogger| 构造器和说明 |
|---|
GroovyBeanDefinitionReader(BeanDefinitionRegistry registry)
Create a new
GroovyBeanDefinitionReader for the given
BeanDefinitionRegistry. |
GroovyBeanDefinitionReader(XmlBeanDefinitionReader xmlBeanDefinitionReader)
Create a new
GroovyBeanDefinitionReader based on the given
XmlBeanDefinitionReader, loading bean definitions into its
BeanDefinitionRegistry and delegating Groovy DSL loading to it. |
| 限定符和类型 | 方法和说明 |
|---|---|
protected void |
applyPropertyToBeanDefinition(String name,
Object value) |
GenericBeanDefinition |
bean(Class<?> type)
Define an inner bean definition.
|
AbstractBeanDefinition |
bean(Class<?> type,
Object... args)
Define an inner bean definition.
|
GroovyBeanDefinitionReader |
beans(groovy.lang.Closure closure)
Defines a set of beans for the given block or closure.
|
groovy.lang.Binding |
getBinding()
Return a specified binding for Groovy variables, if any.
|
groovy.lang.MetaClass |
getMetaClass() |
Object |
getProperty(String name)
This method overrides property retrieval in the scope of the
GroovyBeanDefinitionReader. |
void |
importBeans(String resourcePattern)
Import Spring bean definitions from either XML or Groovy sources into the
current bean builder instance.
|
protected GroovyBeanDefinitionReader |
invokeBeanDefiningClosure(groovy.lang.Closure callable)
When a method argument is only a closure it is a set of bean definitions.
|
Object |
invokeMethod(String name,
Object arg)
This method overrides method invocation to create beans for each method name that
takes a class argument.
|
int |
loadBeanDefinitions(org.springframework.core.io.support.EncodedResource encodedResource)
Load bean definitions from the specified Groovy script or XML file.
|
int |
loadBeanDefinitions(org.springframework.core.io.Resource resource)
Load bean definitions from the specified Groovy script or XML file.
|
protected List<Object> |
resolveConstructorArguments(Object[] args,
int start,
int end) |
void |
setBinding(groovy.lang.Binding binding)
Set the binding, i.e. the Groovy variables available in the scope
of a
GroovyBeanDefinitionReader closure. |
void |
setMetaClass(groovy.lang.MetaClass metaClass) |
void |
setProperty(String name,
Object value)
This method overrides property setting in the scope of the
GroovyBeanDefinitionReader
to set properties on the current bean definition. |
void |
xmlns(Map<String,String> definition)
Define a Spring XML namespace definition to use.
|
getBeanClassLoader, getBeanFactory, getBeanNameGenerator, getEnvironment, getRegistry, getResourceLoader, loadBeanDefinitions, loadBeanDefinitions, loadBeanDefinitions, loadBeanDefinitions, setBeanClassLoader, setBeanNameGenerator, setEnvironment, setResourceLoaderpublic GroovyBeanDefinitionReader(BeanDefinitionRegistry registry)
GroovyBeanDefinitionReader for the given
BeanDefinitionRegistry.registry - the BeanDefinitionRegistry to load bean definitions intopublic GroovyBeanDefinitionReader(XmlBeanDefinitionReader xmlBeanDefinitionReader)
GroovyBeanDefinitionReader based on the given
XmlBeanDefinitionReader, loading bean definitions into its
BeanDefinitionRegistry and delegating Groovy DSL loading to it.
The supplied XmlBeanDefinitionReader should typically
be pre-configured with XML validation disabled.
xmlBeanDefinitionReader - the XmlBeanDefinitionReader to
derive the registry from and to delegate Groovy DSL loading topublic void setMetaClass(groovy.lang.MetaClass metaClass)
setMetaClass 在接口中 groovy.lang.GroovyObjectpublic groovy.lang.MetaClass getMetaClass()
getMetaClass 在接口中 groovy.lang.GroovyObjectpublic void setBinding(groovy.lang.Binding binding)
GroovyBeanDefinitionReader closure.public groovy.lang.Binding getBinding()
public int loadBeanDefinitions(org.springframework.core.io.Resource resource)
throws BeanDefinitionStoreException
Note that ".xml" files will be parsed as XML content; all other kinds
of resources will be parsed as Groovy scripts.
loadBeanDefinitions 在接口中 BeanDefinitionReaderresource - the resource descriptor for the Groovy script or XML fileBeanDefinitionStoreException - in case of loading or parsing errorspublic int loadBeanDefinitions(org.springframework.core.io.support.EncodedResource encodedResource)
throws BeanDefinitionStoreException
Note that ".xml" files will be parsed as XML content; all other kinds
of resources will be parsed as Groovy scripts.
encodedResource - the resource descriptor for the Groovy script or XML file,
allowing specification of an encoding to use for parsing the fileBeanDefinitionStoreException - in case of loading or parsing errorspublic GroovyBeanDefinitionReader beans(groovy.lang.Closure closure)
closure - the block or closureGroovyBeanDefinitionReader instancepublic GenericBeanDefinition bean(Class<?> type)
type - the bean typepublic AbstractBeanDefinition bean(Class<?> type, Object... args)
type - the bean typeargs - the constructors arguments and closure configurerpublic void xmlns(Map<String,String> definition)
definition - the namespace definitionpublic void importBeans(String resourcePattern) throws IOException
resourcePattern - the resource patternIOExceptionpublic Object invokeMethod(String name, Object arg)
invokeMethod 在接口中 groovy.lang.GroovyObjectprotected GroovyBeanDefinitionReader invokeBeanDefiningClosure(groovy.lang.Closure callable)
callable - the closure argumentGroovyBeanDefinitionReader instanceprotected List<Object> resolveConstructorArguments(Object[] args, int start, int end)
public void setProperty(String name, Object value)
GroovyBeanDefinitionReader
to set properties on the current bean definition.setProperty 在接口中 groovy.lang.GroovyObjectprotected void applyPropertyToBeanDefinition(String name, Object value)
public Object getProperty(String name)
GroovyBeanDefinitionReader. A property retrieval will either:
GroovyBeanDefinitionReader itself
getProperty 在接口中 groovy.lang.GroovyObject