## org.springframework.beans.factory.support
Class ChildBeanDefinition

    java.lang.Object
      org.springframework.core.AttributeAccessorSupport
          org.springframework.beans.BeanMetadataAttributeAccessor
              org.springframework.beans.factory.support.AbstractBeanDefinition
                  org.springframework.beans.factory.support.ChildBeanDefinition

All Implemented Interfaces:
  Serializable, Cloneable, BeanMetadataElement, BeanDefinition, AttributeAccessor

    public class ChildBeanDefinition

extends AbstractBeanDefinition

Bean definition for beans which inherit settings from their parent. Child bean definitions have a fixed dependency on a parent bean definition.

A child bean definition will inherit constructor argument values, property values and method overrides from the parent, with the option to add new values. If init method, destroy method and/or static factory method are specified, they will override the corresponding parent settings. The remaining settings will always be taken from the child definition: depends on, autowire mode, dependency check, singleton, lazy init.

NOTE: Since Spring 2.5, the preferred way to register bean definitions programmatically is the `GenericBeanDefinition` class, which allows to dynamically define parent dependencies through the `GenericBeanDefinition.setParentName(java.lang.String)` method. This effectively supersedes the ChildBeanDefinition class for most use cases.

Author:
  Rod Johnson, Juergen Hoeller
See Also:
  `GenericBeanDefinition`, `RootBeanDefinition`, Serialized Form

Field Summary

Fields inherited from class org.springframework.beans.factory.support.AbstractBeanDefinition
`AUTOWIRE_AUTODETECT, AUTOWIRE_BY_NAME, AUTOWIRE_BY_TYPE, AUTOWIRE_CONSTRUCTOR, AUTOWIRE_NO, DEPENDENCY_CHECK_ALL, DEPENDENCY_CHECK_NONE, DEPENDENCY_CHECK_OBJECTS, DEPENDENCY_CHECK_SIMPLE, INFER_METHOD, SCOPE_DEFAULT`

Fields inherited from interface org.springframework.beans.factory.config.BeanDefinition
`ROLE_APPLICATION, ROLE_INFRASTRUCTURE, ROLE_SUPPORT, SCOPE_PROTOTYPE, SCOPE_SINGLETON`

Constructor Summary
`ChildBeanDefinition(ChildBeanDefinition original)` Create a new ChildBeanDefinition as deep copy of the given bean definition.
`ChildBeanDefinition(String parentName)` Create a new ChildBeanDefinition for the given parent, to be configured through its bean properties and configuration methods.
`ChildBeanDefinition(String parentName, Class beanClass, ConstructorArgumentValues cargs, MutablePropertyValues pvs)` Create a new ChildBeanDefinition for the given parent, providing constructor arguments and property values.
`ChildBeanDefinition(String parentName, ConstructorArgumentValues cargs, MutablePropertyValues pvs)` Create a new ChildBeanDefinition for the given parent.
`ChildBeanDefinition(String parentName, MutablePropertyValues pvs)` Create a new ChildBeanDefinition for the given parent.
`ChildBeanDefinition(String parentName, String beanClassName, ConstructorArgumentValues cargs, MutablePropertyValues pvs)` Create a new ChildBeanDefinition for the given parent, providing constructor arguments and property values.

Method Summary
`AbstractBeanDefinition` `cloneBeanDefinition()` Clone this bean definition.
`boolean` `equals(Object other)`
`String` `getParentName()` Return the name of the parent definition of this bean definition, if any.
`int` `hashCode()`
`void` `setParentName(String parentName)` Set the name of the parent definition of this bean definition, if any.
`String` `toString()`
`void` `validate()` Validate this bean definition.

Methods inherited from class org.springframework.beans.factory.support.AbstractBeanDefinition

`addQualifier, applyDefaults, clone, copyQualifiersFrom, getAutowireMode, getBeanClass, getBeanClassName, getConstructorArgumentValues, getDependencyCheck, getDependsOn, getDescription, getDestroyMethodName, getFactoryBeanName, getFactoryMethodName, getInitMethodName, getMethodOverrides, getOriginatingBeanDefinition, getPropertyValues, getQualifier, getQualifiers, getResolvedAutowireMode, getResource, getResourceDescription, getRole, getScope, hasBeanClass, hasConstructorArgumentValues, hasQualifier, isAbstract, isAutowireCandidate, isEnforceDestroyMethod, isEnforceInitMethod, isLazyInit, isLenientConstructorResolution, isNonPublicAccessAllowed, isPrimary, isPrototype, isSingleton, isSynthetic, overrideFrom, overrideFrom, prepareMethodOverride, prepareMethodOverrides, resolveBeanClass, setAbstract, setAutowireCandidate, setAutowireMode, setBeanClass, setBeanClassName, setConstructorArgumentValues, setDependencyCheck, setDependsOn, setDescription, setDestroyMethodName, setEnforceDestroyMethod, setEnforceInitMethod, setFactoryBeanName, setFactoryMethodName, setInitMethodName, setLazyInit, setLenientConstructorResolution, setMethodOverrides, setNonPublicAccessAllowed, setOriginatingBeanDefinition, setPrimary, setPropertyValues, setResource, setResourceDescription, setRole, setScope, setSingleton, setSynthetic`

Methods inherited from class org.springframework.beans.BeanMetadataAttributeAccessor
`addMetadataAttribute, getAttribute, getMetadataAttribute, getSource, removeAttribute, setAttribute, setSource`

Methods inherited from class org.springframework.core.AttributeAccessorSupport
`attributeNames, copyAttributesFrom, hasAttribute`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.springframework.core.AttributeAccessor
`attributeNames, getAttribute, hasAttribute, removeAttribute, setAttribute`

Methods inherited from interface org.springframework.beans.BeanMetadataElement
`getSource`

Constructor Detail

### ChildBeanDefinition

    public ChildBeanDefinition(String parentName)

  Create a new ChildBeanDefinition for the given parent, to be configured through its bean properties and configuration methods.

  Parameters:
    `parentName` - the name of the parent bean
  See Also:
    `AbstractBeanDefinition.setBeanClass(java.lang.Class<?>)`, `AbstractBeanDefinition.setBeanClassName(java.lang.String)`, `AbstractBeanDefinition.setScope(java.lang.String)`, `AbstractBeanDefinition.setAutowireMode(int)`, `AbstractBeanDefinition.setDependencyCheck(int)`, `AbstractBeanDefinition.setConstructorArgumentValues(org.springframework.beans.factory.config.ConstructorArgumentValues)`, `AbstractBeanDefinition.setPropertyValues(org.springframework.beans.MutablePropertyValues)`

### ChildBeanDefinition

    public ChildBeanDefinition(String parentName,
                               MutablePropertyValues pvs)

  Create a new ChildBeanDefinition for the given parent.

  Parameters:
    `parentName` - the name of the parent bean
    `pvs` - the additional property values of the child

### ChildBeanDefinition

    public ChildBeanDefinition(String parentName,
                               ConstructorArgumentValues cargs,
                               MutablePropertyValues pvs)

  Create a new ChildBeanDefinition for the given parent.

  Parameters:
    `parentName` - the name of the parent bean
    `cargs` - the constructor argument values to apply
    `pvs` - the additional property values of the child

### ChildBeanDefinition

    public ChildBeanDefinition(String parentName,
                               Class beanClass,
                               ConstructorArgumentValues cargs,
                               MutablePropertyValues pvs)

  Create a new ChildBeanDefinition for the given parent, providing constructor arguments and property values.

  Parameters:
    `parentName` - the name of the parent bean
    `beanClass` - the class of the bean to instantiate
    `cargs` - the constructor argument values to apply
    `pvs` - the property values to apply

### ChildBeanDefinition

    public ChildBeanDefinition(String parentName,
                               String beanClassName,
                               ConstructorArgumentValues cargs,
                               MutablePropertyValues pvs)

  Create a new ChildBeanDefinition for the given parent, providing constructor arguments and property values. Takes a bean class name to avoid eager loading of the bean class.

  Parameters:
    `parentName` - the name of the parent bean
    `beanClassName` - the name of the class to instantiate
    `cargs` - the constructor argument values to apply
    `pvs` - the property values to apply

### ChildBeanDefinition

    public ChildBeanDefinition(ChildBeanDefinition original)

  Create a new ChildBeanDefinition as deep copy of the given bean definition.

  Parameters:
    `original` - the original bean definition to copy from

Method Detail

### setParentName

    public void setParentName(String parentName)

  Description copied from interface: `BeanDefinition`
  Set the name of the parent definition of this bean definition, if any.

### getParentName

    public String getParentName()

  Description copied from interface: `BeanDefinition`
  Return the name of the parent definition of this bean definition, if any.

### validate

    public void validate()
                  throws BeanDefinitionValidationException

  Description copied from class: `AbstractBeanDefinition`
  Validate this bean definition.

  Overrides:
    `validate` in class `AbstractBeanDefinition`
  Throws:
    `BeanDefinitionValidationException` - in case of validation failure

### cloneBeanDefinition

    public AbstractBeanDefinition cloneBeanDefinition()

  Description copied from class: `AbstractBeanDefinition`
  Clone this bean definition. To be implemented by concrete subclasses.

  Specified by:
    `cloneBeanDefinition` in class `AbstractBeanDefinition`
  Returns:
    the cloned bean definition object

### equals

    public boolean equals(Object other)

  Overrides:
    `equals` in class `AbstractBeanDefinition`

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `AbstractBeanDefinition`

### toString

    public String toString()

  Overrides:
    `toString` in class `AbstractBeanDefinition`