public class RootBeanDefinition extends AbstractBeanDefinition
GenericBeanDefinitions
.
A root bean definition is essentially the 'unified' bean definition view at runtime.
Root bean definitions may also be used for registering individual bean definitions
in the configuration phase. However, since Spring 2.5, the preferred way to register
bean definitions programmatically is the GenericBeanDefinition
class.
GenericBeanDefinition has the advantage that it allows to dynamically define
parent dependencies, not 'hard-coding' the role as a root bean definition.
GenericBeanDefinition
,
ChildBeanDefinition
,
Serialized FormModifier and Type | Field and Description |
---|---|
(package private) boolean |
allowCaching |
(package private) java.lang.Boolean |
beforeInstantiationResolved
Package-visible field that indicates a before-instantiation post-processor having kicked in
|
(package private) java.lang.Object |
constructorArgumentLock
Common lock for the four constructor fields below
|
(package private) boolean |
constructorArgumentsResolved
Package-visible field that marks the constructor arguments as resolved
|
private BeanDefinitionHolder |
decoratedDefinition |
private java.util.Set<java.lang.reflect.Member> |
externallyManagedConfigMembers |
private java.util.Set<java.lang.String> |
externallyManagedDestroyMethods |
private java.util.Set<java.lang.String> |
externallyManagedInitMethods |
(package private) ResolvableType |
factoryMethodReturnType
Package-visible field for caching the return type of a generically typed factory method
|
(package private) boolean |
isFactoryMethodUnique |
(package private) boolean |
postProcessed
Package-visible field that indicates MergedBeanDefinitionPostProcessor having been applied
|
(package private) java.lang.Object |
postProcessingLock
Common lock for the two post-processing fields below
|
(package private) java.lang.Object[] |
preparedConstructorArguments
Package-visible field for caching partly prepared constructor arguments
|
private java.lang.reflect.AnnotatedElement |
qualifiedElement |
(package private) java.lang.Object[] |
resolvedConstructorArguments
Package-visible field for caching fully resolved constructor arguments
|
(package private) java.lang.reflect.Executable |
resolvedConstructorOrFactoryMethod
Package-visible field for caching the resolved constructor or factory method
|
(package private) java.lang.Class<?> |
resolvedTargetType
Package-visible field for caching the determined Class of a given bean definition
|
(package private) ResolvableType |
targetType |
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
ROLE_APPLICATION, ROLE_INFRASTRUCTURE, ROLE_SUPPORT, SCOPE_PROTOTYPE, SCOPE_SINGLETON
Constructor and Description |
---|
RootBeanDefinition()
Create a new RootBeanDefinition, to be configured through its bean
properties and configuration methods.
|
RootBeanDefinition(BeanDefinition original)
Create a new RootBeanDefinition as deep copy of the given
bean definition.
|
RootBeanDefinition(java.lang.Class<?> beanClass)
Create a new RootBeanDefinition for a singleton.
|
RootBeanDefinition(java.lang.Class<?> beanClass,
ConstructorArgumentValues cargs,
MutablePropertyValues pvs)
Create a new RootBeanDefinition for a singleton,
providing constructor arguments and property values.
|
RootBeanDefinition(java.lang.Class<?> beanClass,
int autowireMode,
boolean dependencyCheck)
Create a new RootBeanDefinition for a singleton,
using the given autowire mode.
|
RootBeanDefinition(java.lang.Class<T> beanClass,
java.lang.String scope,
java.util.function.Supplier<T> instanceSupplier)
Create a new RootBeanDefinition for a scoped bean, constructing each instance
through calling the given supplier (possibly a lambda or method reference).
|
RootBeanDefinition(java.lang.Class<T> beanClass,
java.util.function.Supplier<T> instanceSupplier)
Create a new RootBeanDefinition for a singleton bean, constructing each instance
through calling the given supplier (possibly a lambda or method reference).
|
RootBeanDefinition(RootBeanDefinition original)
Create a new RootBeanDefinition as deep copy of the given
bean definition.
|
RootBeanDefinition(java.lang.String beanClassName)
Create a new RootBeanDefinition for a singleton,
providing constructor arguments and property values.
|
RootBeanDefinition(java.lang.String beanClassName,
ConstructorArgumentValues cargs,
MutablePropertyValues pvs)
Create a new RootBeanDefinition for a singleton,
providing constructor arguments and property values.
|
Modifier and Type | Method and Description |
---|---|
RootBeanDefinition |
cloneBeanDefinition()
Clone this bean definition.
|
boolean |
equals(java.lang.Object other) |
BeanDefinitionHolder |
getDecoratedDefinition()
Return the target definition that is being decorated by this bean definition, if any.
|
java.lang.String |
getParentName()
Return the name of the parent definition of this bean definition, if any.
|
java.lang.reflect.AnnotatedElement |
getQualifiedElement()
Return the
AnnotatedElement defining qualifiers, if any. |
java.lang.reflect.Method |
getResolvedFactoryMethod()
Return the resolved factory method as a Java Method object, if available.
|
java.lang.Class<?> |
getTargetType()
Return the target type of this bean definition, if known
(either specified in advance or resolved on first instantiation).
|
boolean |
isExternallyManagedConfigMember(java.lang.reflect.Member configMember) |
boolean |
isExternallyManagedDestroyMethod(java.lang.String destroyMethod) |
boolean |
isExternallyManagedInitMethod(java.lang.String initMethod) |
boolean |
isFactoryMethod(java.lang.reflect.Method candidate)
Check whether the given candidate qualifies as a factory method.
|
void |
registerExternallyManagedConfigMember(java.lang.reflect.Member configMember) |
void |
registerExternallyManagedDestroyMethod(java.lang.String destroyMethod) |
void |
registerExternallyManagedInitMethod(java.lang.String initMethod) |
void |
setDecoratedDefinition(BeanDefinitionHolder decoratedDefinition)
Register a target definition that is being decorated by this bean definition.
|
void |
setParentName(java.lang.String parentName)
Set the name of the parent definition of this bean definition, if any.
|
void |
setQualifiedElement(java.lang.reflect.AnnotatedElement qualifiedElement)
Specify the
AnnotatedElement defining qualifiers,
to be used instead of the target class or factory method. |
void |
setTargetType(java.lang.Class<?> targetType)
Specify the target type of this bean definition, if known in advance.
|
void |
setTargetType(ResolvableType targetType)
Specify a generics-containing target type of this bean definition, if known in advance.
|
void |
setUniqueFactoryMethodName(java.lang.String name)
Specify a factory method name that refers to a non-overloaded method.
|
java.lang.String |
toString() |
addQualifier, applyDefaults, clone, copyQualifiersFrom, getAutowireMode, getBeanClass, getBeanClassName, getConstructorArgumentValues, getDependencyCheck, getDependsOn, getDescription, getDestroyMethodName, getFactoryBeanName, getFactoryMethodName, getInitMethodName, getInstanceSupplier, getMethodOverrides, getOriginatingBeanDefinition, getPropertyValues, getQualifier, getQualifiers, getResolvedAutowireMode, getResource, getResourceDescription, getRole, getScope, hasBeanClass, hasConstructorArgumentValues, hashCode, hasMethodOverrides, hasPropertyValues, hasQualifier, isAbstract, isAutowireCandidate, isEnforceDestroyMethod, isEnforceInitMethod, isLazyInit, isLenientConstructorResolution, isNonPublicAccessAllowed, isPrimary, isPrototype, isSingleton, isSynthetic, overrideFrom, prepareMethodOverride, prepareMethodOverrides, resolveBeanClass, setAbstract, setAutowireCandidate, setAutowireMode, setBeanClass, setBeanClassName, setConstructorArgumentValues, setDependencyCheck, setDependsOn, setDescription, setDestroyMethodName, setEnforceDestroyMethod, setEnforceInitMethod, setFactoryBeanName, setFactoryMethodName, setInitMethodName, setInstanceSupplier, setLazyInit, setLenientConstructorResolution, setMethodOverrides, setNonPublicAccessAllowed, setOriginatingBeanDefinition, setPrimary, setPropertyValues, setResource, setResourceDescription, setRole, setScope, setSynthetic, validate
addMetadataAttribute, getAttribute, getMetadataAttribute, getSource, removeAttribute, setAttribute, setSource
attributeNames, copyAttributesFrom, hasAttribute
finalize, getClass, notify, notifyAll, wait, wait, wait
attributeNames, getAttribute, hasAttribute, removeAttribute, setAttribute
getSource
@Nullable private BeanDefinitionHolder decoratedDefinition
@Nullable private java.lang.reflect.AnnotatedElement qualifiedElement
boolean allowCaching
boolean isFactoryMethodUnique
@Nullable volatile ResolvableType targetType
@Nullable volatile java.lang.Class<?> resolvedTargetType
@Nullable volatile ResolvableType factoryMethodReturnType
final java.lang.Object constructorArgumentLock
@Nullable java.lang.reflect.Executable resolvedConstructorOrFactoryMethod
boolean constructorArgumentsResolved
@Nullable java.lang.Object[] resolvedConstructorArguments
@Nullable java.lang.Object[] preparedConstructorArguments
final java.lang.Object postProcessingLock
boolean postProcessed
@Nullable volatile java.lang.Boolean beforeInstantiationResolved
@Nullable private java.util.Set<java.lang.reflect.Member> externallyManagedConfigMembers
@Nullable private java.util.Set<java.lang.String> externallyManagedInitMethods
@Nullable private java.util.Set<java.lang.String> externallyManagedDestroyMethods
public RootBeanDefinition()
AbstractBeanDefinition.setBeanClass(java.lang.Class<?>)
,
AbstractBeanDefinition.setScope(java.lang.String)
,
AbstractBeanDefinition.setConstructorArgumentValues(org.springframework.beans.factory.config.ConstructorArgumentValues)
,
AbstractBeanDefinition.setPropertyValues(org.springframework.beans.MutablePropertyValues)
public RootBeanDefinition(@Nullable java.lang.Class<?> beanClass)
beanClass
- the class of the bean to instantiateAbstractBeanDefinition.setBeanClass(java.lang.Class<?>)
public RootBeanDefinition(@Nullable java.lang.Class<T> beanClass, @Nullable java.util.function.Supplier<T> instanceSupplier)
beanClass
- the class of the bean to instantiateinstanceSupplier
- the supplier to construct a bean instance,
as an alternative to a declaratively specified factory methodAbstractBeanDefinition.setInstanceSupplier(java.util.function.Supplier<?>)
public RootBeanDefinition(@Nullable java.lang.Class<T> beanClass, java.lang.String scope, @Nullable java.util.function.Supplier<T> instanceSupplier)
beanClass
- the class of the bean to instantiatescope
- the name of the corresponding scopeinstanceSupplier
- the supplier to construct a bean instance,
as an alternative to a declaratively specified factory methodAbstractBeanDefinition.setInstanceSupplier(java.util.function.Supplier<?>)
public RootBeanDefinition(@Nullable java.lang.Class<?> beanClass, int autowireMode, boolean dependencyCheck)
beanClass
- the class of the bean to instantiateautowireMode
- by name or type, using the constants in this interfacedependencyCheck
- whether to perform a dependency check for objects
(not applicable to autowiring a constructor, thus ignored there)public RootBeanDefinition(@Nullable java.lang.Class<?> beanClass, @Nullable ConstructorArgumentValues cargs, @Nullable MutablePropertyValues pvs)
beanClass
- the class of the bean to instantiatecargs
- the constructor argument values to applypvs
- the property values to applypublic RootBeanDefinition(java.lang.String beanClassName)
Takes a bean class name to avoid eager loading of the bean class.
beanClassName
- the name of the class to instantiatepublic RootBeanDefinition(java.lang.String beanClassName, ConstructorArgumentValues cargs, MutablePropertyValues pvs)
Takes a bean class name to avoid eager loading of the bean class.
beanClassName
- the name of the class to instantiatecargs
- the constructor argument values to applypvs
- the property values to applypublic RootBeanDefinition(RootBeanDefinition original)
original
- the original bean definition to copy fromRootBeanDefinition(BeanDefinition original)
original
- the original bean definition to copy frompublic java.lang.String getParentName()
BeanDefinition
public void setParentName(@Nullable java.lang.String parentName)
BeanDefinition
public void setDecoratedDefinition(@Nullable BeanDefinitionHolder decoratedDefinition)
@Nullable public BeanDefinitionHolder getDecoratedDefinition()
public void setQualifiedElement(@Nullable java.lang.reflect.AnnotatedElement qualifiedElement)
AnnotatedElement
defining qualifiers,
to be used instead of the target class or factory method.setTargetType(ResolvableType)
,
getResolvedFactoryMethod()
@Nullable public java.lang.reflect.AnnotatedElement getQualifiedElement()
AnnotatedElement
defining qualifiers, if any.
Otherwise, the factory method and target class will be checked.public void setTargetType(ResolvableType targetType)
public void setTargetType(@Nullable java.lang.Class<?> targetType)
@Nullable public java.lang.Class<?> getTargetType()
public void setUniqueFactoryMethodName(java.lang.String name)
public boolean isFactoryMethod(java.lang.reflect.Method candidate)
@Nullable public java.lang.reflect.Method getResolvedFactoryMethod()
null
if not found or not resolved yetpublic void registerExternallyManagedConfigMember(java.lang.reflect.Member configMember)
public boolean isExternallyManagedConfigMember(java.lang.reflect.Member configMember)
public void registerExternallyManagedInitMethod(java.lang.String initMethod)
public boolean isExternallyManagedInitMethod(java.lang.String initMethod)
public void registerExternallyManagedDestroyMethod(java.lang.String destroyMethod)
public boolean isExternallyManagedDestroyMethod(java.lang.String destroyMethod)
public RootBeanDefinition cloneBeanDefinition()
AbstractBeanDefinition
cloneBeanDefinition
in class AbstractBeanDefinition
public boolean equals(java.lang.Object other)
equals
in class AbstractBeanDefinition
public java.lang.String toString()
toString
in class AbstractBeanDefinition