Package org.springframework.beans.factory.support

# Class GenericBeanDefinition

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

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `BeanMetadataElement`, `BeanDefinition`, `org.springframework.core.AttributeAccessor`

Direct Known Subclasses:
  `AnnotatedGenericBeanDefinition`

public class GenericBeanDefinition extends AbstractBeanDefinition
GenericBeanDefinition is a one-stop shop for declarative bean definition purposes. Like all common bean definitions, it allows for specifying a class plus optionally constructor argument values and property values. Additionally, deriving from a parent bean definition can be flexibly configured through the "parentName" property.

In general, use this `GenericBeanDefinition` class for the purpose of registering declarative bean definitions (for example, XML definitions which a bean post-processor might operate on, potentially even reconfiguring the parent name). Use `RootBeanDefinition`/`ChildBeanDefinition` where parent/child relationships happen to be pre-determined, and prefer `RootBeanDefinition` specifically for programmatic definitions derived from factory methods/suppliers.

Since:
  2.5
Author:
  Juergen Hoeller
See Also:
  - `setParentName(java.lang.String)`
  - `RootBeanDefinition`
  - `ChildBeanDefinition`
  - 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, ORDER_ATTRIBUTE, PREFERRED_CONSTRUCTORS_ATTRIBUTE, SCOPE_DEFAULT`

### Fields inherited from interface org.springframework.beans.factory.config.BeanDefinition

`ROLE_APPLICATION, ROLE_INFRASTRUCTURE, ROLE_SUPPORT, SCOPE_PROTOTYPE, SCOPE_SINGLETON`

## Constructor Summary

Constructors
Constructor
Description
`GenericBeanDefinition()`
Create a new GenericBeanDefinition, to be configured through its bean properties and configuration methods.
`GenericBeanDefinition(BeanDefinition original)`
Create a new GenericBeanDefinition as deep copy of the given bean definition.

## Method Summary

Modifier and Type
Method
Description
`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.
`void`
`setParentName(String parentName)`
Set the name of the parent definition of this bean definition, if any.
`String`
`toString()`

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

`addQualifier, applyDefaults, clone, copyQualifiersFrom, getAutowireMode, getBeanClass, getBeanClassName, getConstructorArgumentValues, getDependencyCheck, getDependsOn, getDescription, getDestroyMethodName, getDestroyMethodNames, getFactoryBeanName, getFactoryMethodName, getInitMethodName, getInitMethodNames, getInstanceSupplier, getLazyInit, getMethodOverrides, getOriginatingBeanDefinition, getPropertyValues, getQualifier, getQualifiers, getResolvableType, getResolvedAutowireMode, getResource, getResourceDescription, getRole, getScope, hasBeanClass, hasConstructorArgumentValues, hashCode, hasMethodOverrides, hasPropertyValues, hasQualifier, isAbstract, isAutowireCandidate, isBackgroundInit, isDefaultCandidate, isEnforceDestroyMethod, isEnforceInitMethod, isFallback, isLazyInit, isLenientConstructorResolution, isNonPublicAccessAllowed, isPrimary, isPrototype, isSingleton, isSynthetic, overrideFrom, prepareMethodOverride, prepareMethodOverrides, resolveBeanClass, setAbstract, setAutowireCandidate, setAutowireMode, setBackgroundInit, setBeanClass, setBeanClassName, setConstructorArgumentValues, setDefaultCandidate, setDependencyCheck, setDependsOn, setDescription, setDestroyMethodName, setDestroyMethodNames, setEnforceDestroyMethod, setEnforceInitMethod, setFactoryBeanName, setFactoryMethodName, setFallback, setInitMethodName, setInitMethodNames, setInstanceSupplier, setLazyInit, setLenientConstructorResolution, setMethodOverrides, setNonPublicAccessAllowed, setOriginatingBeanDefinition, setPrimary, setPropertyValues, setResource, setResourceDescription, setRole, setScope, setSynthetic, validate`

### Methods inherited from class org.springframework.beans.BeanMetadataAttributeAccessor

`addMetadataAttribute, getAttribute, getMetadataAttribute, getSource, removeAttribute, setAttribute, setSource`

### Methods inherited from class org.springframework.core.AttributeAccessorSupport

`attributeNames, computeAttribute, 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, computeAttribute, getAttribute, hasAttribute, removeAttribute, setAttribute`

### Methods inherited from interface org.springframework.beans.BeanMetadataElement

`getSource`

## Constructor Details

### GenericBeanDefinition

public GenericBeanDefinition()
Create a new GenericBeanDefinition, to be configured through its bean properties and configuration methods.

See Also:
  - `AbstractBeanDefinition.setBeanClass(java.lang.Class<?>)`
  - `AbstractBeanDefinition.setScope(java.lang.String)`
  - `AbstractBeanDefinition.setConstructorArgumentValues(org.springframework.beans.factory.config.ConstructorArgumentValues)`
  - `AbstractBeanDefinition.setPropertyValues(org.springframework.beans.MutablePropertyValues)`

### GenericBeanDefinition

public GenericBeanDefinition(BeanDefinition original)
Create a new GenericBeanDefinition as deep copy of the given bean definition.

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

## Method Details

### setParentName

public void setParentName(@Nullable String parentName)
Description copied from interface: `BeanDefinition`
Set the name of the parent definition of this bean definition, if any.

### getParentName

@Nullable public String getParentName()
Description copied from interface: `BeanDefinition`
Return the name of the parent definition of this bean definition, if any.

### 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(@Nullable Object other)

Overrides:
  `equals` in class `AbstractBeanDefinition`

### toString

public String toString()

Overrides:
  `toString` in class `AbstractBeanDefinition`