类 GroovyBeanDefinitionReader

  • 所有已实现的接口:
    groovy.lang.GroovyObject, BeanDefinitionReader, EnvironmentCapable

    public class GroovyBeanDefinitionReader
    extends AbstractBeanDefinitionReader
    implements groovy.lang.GroovyObject
    A Groovy-based reader for Spring bean definitions: like a Groovy builder, but more of a DSL for Spring configuration.

    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 GenericApplicationContext, but can be used against any BeanDefinitionRegistry implementation.

    Example Syntax

     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
             }
         }
     }
    从以下版本开始:
    4.0
    作者:
    Jeff Brown, Graeme Rocher, Juergen Hoeller, Sam Brannen
    另请参阅:
    BeanDefinitionRegistry, DefaultListableBeanFactory, GenericApplicationContext, GenericGroovyApplicationContext
    • 构造器详细资料

      • GroovyBeanDefinitionReader

        public 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.

        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 to
    • 方法详细资料

      • setMetaClass

        public void setMetaClass​(groovy.lang.MetaClass metaClass)
        指定者:
        setMetaClass 在接口中 groovy.lang.GroovyObject
      • getMetaClass

        public groovy.lang.MetaClass getMetaClass()
        指定者:
        getMetaClass 在接口中 groovy.lang.GroovyObject
      • setBinding

        public void setBinding​(groovy.lang.Binding binding)
        Set the binding, i.e. the Groovy variables available in the scope of a GroovyBeanDefinitionReader closure.
      • getBinding

        public groovy.lang.Binding getBinding()
        Return a specified binding for Groovy variables, if any.
      • loadBeanDefinitions

        public int loadBeanDefinitions​(EncodedResource encodedResource)
                                throws BeanDefinitionStoreException
        Load bean definitions from the specified Groovy script or XML file.

        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 file
        返回:
        the number of bean definitions found
        抛出:
        BeanDefinitionStoreException - in case of loading or parsing errors
      • beans

        public GroovyBeanDefinitionReader beans​(groovy.lang.Closure closure)
        Defines a set of beans for the given block or closure.
        参数:
        closure - the block or closure
        返回:
        this GroovyBeanDefinitionReader instance
      • bean

        public AbstractBeanDefinition bean​(Class<?> type,
                                           Object... args)
        Define an inner bean definition.
        参数:
        type - the bean type
        args - the constructors arguments and closure configurer
        返回:
        the bean definition
      • xmlns

        public void xmlns​(Map<String,​String> definition)
        Define a Spring XML namespace definition to use.
        参数:
        definition - the namespace definition
      • importBeans

        public void importBeans​(String resourcePattern)
                         throws IOException
        Import Spring bean definitions from either XML or Groovy sources into the current bean builder instance.
        参数:
        resourcePattern - the resource pattern
        抛出:
        IOException
      • invokeMethod

        public Object invokeMethod​(String name,
                                   Object arg)
        This method overrides method invocation to create beans for each method name that takes a class argument.
        指定者:
        invokeMethod 在接口中 groovy.lang.GroovyObject
      • invokeBeanDefiningClosure

        protected GroovyBeanDefinitionReader invokeBeanDefiningClosure​(groovy.lang.Closure callable)
        When a method argument is only a closure it is a set of bean definitions.
        参数:
        callable - the closure argument
        返回:
        this GroovyBeanDefinitionReader instance
      • setProperty

        public 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.
        指定者:
        setProperty 在接口中 groovy.lang.GroovyObject
      • getProperty

        public Object getProperty​(String name)
        This method overrides property retrieval in the scope of the GroovyBeanDefinitionReader. A property retrieval will either:
        • Retrieve a variable from the bean builder's binding if it exists
        • Retrieve a RuntimeBeanReference for a specific bean if it exists
        • Otherwise just delegate to MetaClass.getProperty which will resolve properties from the GroovyBeanDefinitionReader itself
        指定者:
        getProperty 在接口中 groovy.lang.GroovyObject