Package org.springframework.beans.factory.annotation

# Class AnnotatedGenericBeanDefinition

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

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

public class AnnotatedGenericBeanDefinition extends GenericBeanDefinition implements AnnotatedBeanDefinition
Extension of the `GenericBeanDefinition` class, adding support for annotation metadata exposed through the `AnnotatedBeanDefinition` interface.

This GenericBeanDefinition variant is mainly useful for testing code that expects to operate on an AnnotatedBeanDefinition, for example strategy implementations in Spring's component scanning support (where the default definition class is `org.springframework.context.annotation.ScannedGenericBeanDefinition`, which also implements the AnnotatedBeanDefinition interface).

Since:
  2.5
Author:
  Juergen Hoeller, Chris Beams
See Also:
  - `AnnotatedBeanDefinition.getMetadata()`
  - `StandardAnnotationMetadata`
  - 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
`AnnotatedGenericBeanDefinition(Class<?> beanClass)`
Create a new AnnotatedGenericBeanDefinition for the given bean class.
`AnnotatedGenericBeanDefinition(org.springframework.core.type.AnnotationMetadata metadata)`
Create a new AnnotatedGenericBeanDefinition for the given annotation metadata, allowing for ASM-based processing and avoidance of early loading of the bean class.
`AnnotatedGenericBeanDefinition(org.springframework.core.type.AnnotationMetadata metadata, org.springframework.core.type.MethodMetadata factoryMethodMetadata)`
Create a new AnnotatedGenericBeanDefinition for the given annotation metadata, based on an annotated class and a factory method on that class.

## Method Summary

Modifier and Type
Method
Description
`final org.springframework.core.type.MethodMetadata`
`getFactoryMethodMetadata()`
Obtain metadata for this bean definition's factory method, if any.
`final org.springframework.core.type.AnnotationMetadata`
`getMetadata()`
Obtain the annotation metadata (as well as basic class metadata) for this bean definition's bean class.

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

`cloneBeanDefinition, equals, getParentName, setParentName, 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.factory.config.BeanDefinition

`getBeanClassName, getConstructorArgumentValues, getDependsOn, getDescription, getDestroyMethodName, getFactoryBeanName, getFactoryMethodName, getInitMethodName, getOriginatingBeanDefinition, getParentName, getPropertyValues, getResolvableType, getResourceDescription, getRole, getScope, hasConstructorArgumentValues, hasPropertyValues, isAbstract, isAutowireCandidate, isFallback, isLazyInit, isPrimary, isPrototype, isSingleton, setAutowireCandidate, setBeanClassName, setDependsOn, setDescription, setDestroyMethodName, setFactoryBeanName, setFactoryMethodName, setFallback, setInitMethodName, setLazyInit, setParentName, setPrimary, setRole, setScope`

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

`getSource`

## Constructor Details

### AnnotatedGenericBeanDefinition

public AnnotatedGenericBeanDefinition(Class<?> beanClass)
Create a new AnnotatedGenericBeanDefinition for the given bean class.

Parameters:
  `beanClass` - the loaded bean class

### AnnotatedGenericBeanDefinition

public AnnotatedGenericBeanDefinition(org.springframework.core.type.AnnotationMetadata metadata)
Create a new AnnotatedGenericBeanDefinition for the given annotation metadata, allowing for ASM-based processing and avoidance of early loading of the bean class. Note that this constructor is functionally equivalent to `ScannedGenericBeanDefinition`, however the semantics of the latter indicate that a bean was discovered specifically via component-scanning as opposed to other means.

Parameters:
  `metadata` - the annotation metadata for the bean class in question
Since:
  3.1.1

### AnnotatedGenericBeanDefinition

public AnnotatedGenericBeanDefinition(org.springframework.core.type.AnnotationMetadata metadata, org.springframework.core.type.MethodMetadata factoryMethodMetadata)
Create a new AnnotatedGenericBeanDefinition for the given annotation metadata, based on an annotated class and a factory method on that class.

Parameters:
  `metadata` - the annotation metadata for the bean class in question
  `factoryMethodMetadata` - metadata for the selected factory method
Since:
  4.1.1

## Method Details

### getMetadata

public final org.springframework.core.type.AnnotationMetadata getMetadata()
Description copied from interface: `AnnotatedBeanDefinition`
Obtain the annotation metadata (as well as basic class metadata) for this bean definition's bean class.

Specified by:
  `getMetadata` in interface `AnnotatedBeanDefinition`
Returns:
  the annotation metadata object (never `null`)

### getFactoryMethodMetadata

@Nullable public final org.springframework.core.type.MethodMetadata getFactoryMethodMetadata()
Description copied from interface: `AnnotatedBeanDefinition`
Obtain metadata for this bean definition's factory method, if any.

Specified by:
  `getFactoryMethodMetadata` in interface `AnnotatedBeanDefinition`
Returns:
  the factory method metadata, or `null` if none