Overview | Package | Class | Deprecated | Index | Help
| Groovy Documentation
| FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## grails.spring
[Java] Class BeanBuilder

    java.lang.Object
      groovy.lang.GroovyObjectSupport
          grails.spring.BeanBuilder

    public class BeanBuilder
    extends groovy.lang.GroovyObjectSupport

Runtime bean configuration wrapper. Like a Groovy builder, but more of a DSL for Spring configuration. Allows syntax like:

     import org.hibernate.SessionFactory
     import org.apache.tomcat.jdbc.pool.DataSource

     BeanBuilder builder = new BeanBuilder()
     builder.beans {
       dataSource(DataSource) {                  // <--- invokeMethod
          driverClassName = "org.h2.Driver"
          url = "jdbc:h2:mem:grailsDB"
          username = "sa"                            // <-- setProperty
          password = ""
          settings = [mynew:"setting"]
      }
      sessionFactory(SessionFactory) {
             dataSource = dataSource                 // <-- getProperty for retrieving refs
      }
      myService(MyService) {
          nestedBean = { AnotherBean bean->          // <-- setProperty with closure for nested bean
                  dataSource = dataSource
          }
      }
     }

You can also use the Spring IO API to load resources containing beans defined as a Groovy script using either the constructors or the loadBeans(Resource[] resources) method

Authors:
  Graeme Rocher

Since:
  0.4

Constructor Summary
`BeanBuilder()`
`BeanBuilder(java.lang.ClassLoader classLoader)`
`BeanBuilder(org.springframework.context.ApplicationContext parent)`
`BeanBuilder(org.springframework.context.ApplicationContext parent, java.lang.ClassLoader classLoader)`
`BeanBuilder(org.springframework.context.ApplicationContext parentCtx, RuntimeSpringConfiguration springConfig, java.lang.ClassLoader classLoader)`

Method Summary
`protected boolean` | `addToDeferred(BeanConfiguration beanConfig, java.lang.String property, java.lang.Object newValue)`
`org.springframework.beans.factory.support.AbstractBeanDefinition` | `bean(java.lang.Class type)`
`org.springframework.beans.factory.support.AbstractBeanDefinition` | `bean(java.lang.Class type, java.lang.Object... args)`
`BeanBuilder` | `beans(groovy.lang.Closure c)` Defines a set of beans for the given block or closure.
`org.springframework.context.ApplicationContext` | `createApplicationContext()` Creates an ApplicationContext from the current state of the BeanBuilder
`protected DynamicElementReader` | `createDynamicElementReader(java.lang.String namespace, boolean decorator)`
`protected RuntimeSpringConfiguration` | `createRuntimeSpringConfiguration(org.springframework.context.ApplicationContext parent, java.lang.ClassLoader cl)`
`protected void` | `filterGStringReferences(java.lang.Object[] constructorArgs)`
`protected void` | `finalizeDeferredProperties()`
`org.springframework.beans.factory.config.BeanDefinition` | `getBeanDefinition(java.lang.String name)` Retrieves a BeanDefinition for the given name
`java.util.Map` | `getBeanDefinitions()` Retrieves all BeanDefinitions for this BeanBuilder
`org.apache.commons.logging.Log` | `getLog()`
`org.springframework.context.ApplicationContext` | `getParentCtx()` Retrieves the parent ApplicationContext
`java.lang.Object` | `getProperty(java.lang.String name)` Overrides property retrieval in the scope of the BeanBuilder to either:
`RuntimeSpringConfiguration` | `getSpringConfig()` Retrieves the RuntimeSpringConfiguration instance used the the BeanBuilder
`void` | `importBeans(java.lang.String resourcePattern)` Imports Spring bean definitions from either XML or Groovy sources into the current bean builder instance
`protected void` | `initializeBeanBuilderForClassLoader(java.lang.ClassLoader classLoader)`
`protected void` | `initializeSpringConfig()`
`protected BeanBuilder` | `invokeBeanDefiningClosure(groovy.lang.Closure callable)` When an method's argument is only a closure it is a set of bean definitions.
`protected BeanConfiguration` | `invokeBeanDefiningMethod(java.lang.String name, java.lang.Object[] args)` Called when a bean definition node is called.
`java.lang.Object` | `invokeMethod(java.lang.String name, java.lang.Object arg)` Overrides method invocation to create beans for each method name that takes a class argument.
`void` | `loadBeans(java.lang.String resourcePattern)` Takes a resource pattern as (@see org.springframework.core.io.support.PathMatchingResourcePatternResolver) This allows you load multiple bean resources in this single builder
`void` | `loadBeans(org.springframework.core.io.Resource resource)` Loads a single Resource into the bean builder
`void` | `loadBeans(org.springframework.core.io.Resource[] resources)` Loads a set of given beans
`protected java.lang.Object` | `manageListIfNecessary(java.lang.Object value)` Checks whether there are any runtime refs inside the list and converts it to a ManagedList if necessary.
`protected java.lang.Object` | `manageMapIfNecessary(java.lang.Object value)` Checks whether there are any runtime refs inside a Map and converts it to a ManagedMap if necessary.
`void` | `registerBeans(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)` Register a set of beans with the given bean registry.
`void` | `registerBeans(RuntimeSpringConfiguration targetSpringConfig)` Registers bean definitions with another instance of RuntimeSpringConfiguration, overriding any beans in the target.
`protected java.util.List` | `resolveConstructorArguments(java.lang.Object[] args, int start, int end)`
`void` | `setBinding(groovy.lang.Binding b)` Sets the binding (the variables available in the scope of the BeanBuilder).
`void` | `setClassLoader(java.lang.ClassLoader classLoader)`
`void` | `setNamespaceHandlerResolver(org.springframework.beans.factory.xml.NamespaceHandlerResolver namespaceHandlerResolver)`
`void` | `setProperty(java.lang.String name, java.lang.Object value)` Overrides property setting in the scope of the BeanBuilder to set properties on the current BeanConfiguration.
`protected void` | `setPropertyOnBeanConfig(java.lang.String name, java.lang.Object value)`
`void` | `setResourcePatternResolver(org.springframework.core.io.support.ResourcePatternResolver resourcePatternResolver)`
`void` | `setSpringConfig(RuntimeSpringConfiguration springConfig)` Sets the runtime Spring configuration instance to use.
`protected java.lang.Object[]` | `subarray(java.lang.Object[] args, int i, int j)`
`void` | `xmlns(java.util.Map definition)` Defines a Spring namespace definition to use.

Methods inherited from class groovy.lang.GroovyObjectSupport
groovy.lang.GroovyObjectSupport#getMetaClass(), groovy.lang.GroovyObjectSupport#setMetaClass(groovy.lang.MetaClass), groovy.lang.GroovyObjectSupport#invokeMethod(java.lang.String, java.lang.Object), groovy.lang.GroovyObjectSupport#setProperty(java.lang.String, java.lang.Object), groovy.lang.GroovyObjectSupport#getProperty(java.lang.String), groovy.lang.GroovyObjectSupport#wait(long, int), groovy.lang.GroovyObjectSupport#wait(long), groovy.lang.GroovyObjectSupport#wait(), groovy.lang.GroovyObjectSupport#equals(java.lang.Object), groovy.lang.GroovyObjectSupport#toString(), groovy.lang.GroovyObjectSupport#hashCode(), groovy.lang.GroovyObjectSupport#getClass(), groovy.lang.GroovyObjectSupport#notify(), groovy.lang.GroovyObjectSupport#notifyAll()

Methods inherited from class java.lang.Object
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()

Constructor Detail

### BeanBuilder

    public BeanBuilder()

### BeanBuilder

    public BeanBuilder(java.lang.ClassLoader classLoader)

### BeanBuilder

    public BeanBuilder(org.springframework.context.ApplicationContext parent)

### BeanBuilder

    public BeanBuilder(org.springframework.context.ApplicationContext parent, java.lang.ClassLoader classLoader)

### BeanBuilder

    public BeanBuilder(org.springframework.context.ApplicationContext parentCtx, RuntimeSpringConfiguration springConfig, java.lang.ClassLoader classLoader)

Method Detail

### addToDeferred

    protected boolean addToDeferred(BeanConfiguration beanConfig, java.lang.String property, java.lang.Object newValue)

### bean

    public org.springframework.beans.factory.support.AbstractBeanDefinition bean(java.lang.Class type)

### bean

    @java.lang.SuppressWarnings
    public org.springframework.beans.factory.support.AbstractBeanDefinition bean(java.lang.Class type, java.lang.Object... args)

### beans

    public BeanBuilder beans(groovy.lang.Closure c)

  Defines a set of beans for the given block or closure.
  Parameters:
    `c` - The block or closure
  Returns:
    This BeanBuilder instance

### createApplicationContext

    public org.springframework.context.ApplicationContext createApplicationContext()

  Creates an ApplicationContext from the current state of the BeanBuilder
  Returns:
    The ApplicationContext instance

### createDynamicElementReader

    protected DynamicElementReader createDynamicElementReader(java.lang.String namespace, boolean decorator)

### createRuntimeSpringConfiguration

    protected RuntimeSpringConfiguration createRuntimeSpringConfiguration(org.springframework.context.ApplicationContext parent, java.lang.ClassLoader cl)

### filterGStringReferences

    protected void filterGStringReferences(java.lang.Object[] constructorArgs)

### finalizeDeferredProperties

    protected void finalizeDeferredProperties()

### getBeanDefinition

    public org.springframework.beans.factory.config.BeanDefinition getBeanDefinition(java.lang.String name)

  Retrieves a BeanDefinition for the given name
  Parameters:
    `name` - The bean definition
  Returns:
    The BeanDefinition instance

### getBeanDefinitions

    public java.util.Map getBeanDefinitions()

  Retrieves all BeanDefinitions for this BeanBuilder
  Returns:
    A map of BeanDefinition instances with the bean id as the key

### getLog

    public org.apache.commons.logging.Log getLog()

### getParentCtx

    public org.springframework.context.ApplicationContext getParentCtx()

  Retrieves the parent ApplicationContext
  Returns:
    The parent ApplicationContext

### getProperty

    @java.lang.Override}
    public java.lang.Object getProperty(java.lang.String name)

  Overrides property retrieval in the scope of the BeanBuilder to either: a) Retrieve a variable from the bean builder's binding if it exists b) Retrieve a RuntimeBeanReference for a specific bean if it exists c) Otherwise just delegate to super.getProperty which will resolve properties from the BeanBuilder itself

### getSpringConfig

    public RuntimeSpringConfiguration getSpringConfig()

  Retrieves the RuntimeSpringConfiguration instance used the the BeanBuilder
  Returns:
    The RuntimeSpringConfiguration instance

### importBeans

    public void importBeans(java.lang.String resourcePattern)

  Imports Spring bean definitions from either XML or Groovy sources into the current bean builder instance
  Parameters:
    `resourcePattern` - The resource pattern

### initializeBeanBuilderForClassLoader

    protected void initializeBeanBuilderForClassLoader(java.lang.ClassLoader classLoader)

### initializeSpringConfig

    protected void initializeSpringConfig()

### invokeBeanDefiningClosure

    protected BeanBuilder invokeBeanDefiningClosure(groovy.lang.Closure callable)

  When an method's argument is only a closure it is a set of bean definitions.
  Parameters:
    `callable` - The closure argument
  Returns:
    This BeanBuilder instance

### invokeBeanDefiningMethod

    protected BeanConfiguration invokeBeanDefiningMethod(java.lang.String name, java.lang.Object[] args)

  Called when a bean definition node is called.
  Parameters:
    `name` - The name of the bean to define
    `args` - The arguments to the bean. The first argument is the class name, the last argument is sometimes a closure. All the arguments in between are constructor arguments
  Returns:
    The bean configuration instance

### invokeMethod

    @java.lang.Override
    public java.lang.Object invokeMethod(java.lang.String name, java.lang.Object arg)

  Overrides method invocation to create beans for each method name that takes a class argument.

### loadBeans

    public void loadBeans(java.lang.String resourcePattern)

  Takes a resource pattern as (
  throws:
    IOException When the path cannot be matched
  Parameters:
    `resourcePattern` - The resource pattern
  See Also:
    org.springframework.core.io.support.PathMatchingResourcePatternResolver

### loadBeans

    public void loadBeans(org.springframework.core.io.Resource resource)

  Loads a single Resource into the bean builder
  Parameters:
    `resource` - The resource to load

### loadBeans

    public void loadBeans(org.springframework.core.io.Resource[] resources)

  Loads a set of given beans
  throws:
    IOException Thrown if there is an error reading one of the passes resources
  Parameters:
    `resources` - The resources to load

### manageListIfNecessary

    @java.lang.SuppressWarnings}
    protected java.lang.Object manageListIfNecessary(java.lang.Object value)

  Checks whether there are any runtime refs inside the list and converts it to a ManagedList if necessary.
  Parameters:
    `value` - The object that represents the list
  Returns:
    Either a new list or a managed one

### manageMapIfNecessary

    @java.lang.SuppressWarnings}
    protected java.lang.Object manageMapIfNecessary(java.lang.Object value)

  Checks whether there are any runtime refs inside a Map and converts it to a ManagedMap if necessary.
  Parameters:
    `value` - The current map
  Returns:
    A ManagedMap or a normal map

### registerBeans

    public void registerBeans(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)

  Register a set of beans with the given bean registry. Most application contexts are bean registries.

### registerBeans

    public void registerBeans(RuntimeSpringConfiguration targetSpringConfig)

  Registers bean definitions with another instance of RuntimeSpringConfiguration, overriding any beans in the target.
  Parameters:
    `targetSpringConfig` - The RuntimeSpringConfiguration object

### resolveConstructorArguments

    @java.lang.SuppressWarningsconstructorArgs[i] = manageMapIfNecessary(constructorArgs[i]);
    protected java.util.List resolveConstructorArguments(java.lang.Object[] args, int start, int end)

### setBinding

    @java.lang.SuppressWarnings
    public void setBinding(groovy.lang.Binding b)

  Sets the binding (the variables available in the scope of the BeanBuilder).
  Parameters:
    `b` - The Binding instance

### setClassLoader

    public void setClassLoader(java.lang.ClassLoader classLoader)

### setNamespaceHandlerResolver

    public void setNamespaceHandlerResolver(org.springframework.beans.factory.xml.NamespaceHandlerResolver namespaceHandlerResolver)

### setProperty

    @java.lang.Override*
    public void setProperty(java.lang.String name, java.lang.Object value)

  Overrides property setting in the scope of the BeanBuilder to set properties on the current BeanConfiguration.

### setPropertyOnBeanConfig

    protected void setPropertyOnBeanConfig(java.lang.String name, java.lang.Object value)

### setResourcePatternResolver

    public void setResourcePatternResolver(org.springframework.core.io.support.ResourcePatternResolver resourcePatternResolver)

### setSpringConfig

    public void setSpringConfig(RuntimeSpringConfiguration springConfig)

  Sets the runtime Spring configuration instance to use. This is not necessary to set and is configured to default value if not, but is useful for integrating with other spring configuration mechanisms
  Parameters:
    `springConfig` - The spring config
  See Also:
    GrailsRuntimeConfigurator

### subarray

    protected java.lang.Object[] subarray(java.lang.Object[] args, int i, int j)

### xmlns

    public void xmlns(java.util.Map definition)

  Defines a Spring namespace definition to use.
  Parameters:
    `definition` - The definition

Groovy Documentation