Package org.springframework.context.annotation

# Class AnnotatedBeanDefinitionReader

java.lang.Object
org.springframework.context.annotation.AnnotatedBeanDefinitionReader

public class AnnotatedBeanDefinitionReader extends Object
Convenient adapter for programmatic registration of bean classes.

This is an alternative to `ClassPathBeanDefinitionScanner`, applying the same resolution of annotations but for explicitly registered classes only.

Since:
  3.0
Author:
  Juergen Hoeller, Chris Beams, Sam Brannen, Phillip Webb, Yanming Zhou
See Also:
  - `AnnotationConfigApplicationContext.register(java.lang.Class<?>...)`

## Constructor Summary

Constructors
Constructor
Description
`AnnotatedBeanDefinitionReader(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)`
Create a new `AnnotatedBeanDefinitionReader` for the given registry.
`AnnotatedBeanDefinitionReader(org.springframework.beans.factory.support.BeanDefinitionRegistry registry, org.springframework.core.env.Environment environment)`
Create a new `AnnotatedBeanDefinitionReader` for the given registry, using the given `Environment`.

## Method Summary

Modifier and Type
Method
Description
`final org.springframework.beans.factory.support.BeanDefinitionRegistry`
`getRegistry()`
Get the BeanDefinitionRegistry that this reader operates on.
`void`
`register(Class<?>... componentClasses)`
Register one or more component classes to be processed.
`void`
`registerBean(Class<?> beanClass)`
Register a bean from the given bean class, deriving its metadata from class-declared annotations.
`void`
`registerBean(Class<?> beanClass, Class<? extends Annotation>... qualifiers)`
Register a bean from the given bean class, deriving its metadata from class-declared annotations.
`void`
`registerBean(Class<?> beanClass, String name)`
Register a bean from the given bean class, deriving its metadata from class-declared annotations.
`void`
`registerBean(Class<?> beanClass, String name, Class<? extends Annotation>... qualifiers)`
Register a bean from the given bean class, deriving its metadata from class-declared annotations.
`<T> void`
`registerBean(Class<T> beanClass, String name, Supplier<T> supplier)`
Register a bean from the given bean class, deriving its metadata from class-declared annotations, using the given supplier for obtaining a new instance (possibly declared as a lambda expression or method reference).
`<T> void`
`registerBean(Class<T> beanClass, String name, Supplier<T> supplier, org.springframework.beans.factory.config.BeanDefinitionCustomizer... customizers)`
Register a bean from the given bean class, deriving its metadata from class-declared annotations.
`<T> void`
`registerBean(Class<T> beanClass, Supplier<T> supplier)`
Register a bean from the given bean class, deriving its metadata from class-declared annotations, using the given supplier for obtaining a new instance (possibly declared as a lambda expression or method reference).
`void`
`setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator beanNameGenerator)`
Set the `BeanNameGenerator` to use for detected bean classes.
`void`
`setEnvironment(org.springframework.core.env.Environment environment)`
Set the `Environment` to use when evaluating whether `@Conditional`-annotated component classes should be registered.
`void`
`setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)`
Set the `ScopeMetadataResolver` to use for registered component classes.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### AnnotatedBeanDefinitionReader

public AnnotatedBeanDefinitionReader(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)
Create a new `AnnotatedBeanDefinitionReader` for the given registry.

If the registry is `EnvironmentCapable`, for example, is an `ApplicationContext`, the `Environment` will be inherited, otherwise a new `StandardEnvironment` will be created and used.

Parameters:
  `registry` - the `BeanFactory` to load bean definitions into, in the form of a `BeanDefinitionRegistry`
See Also:
  - `AnnotatedBeanDefinitionReader(BeanDefinitionRegistry, Environment)`
  - `setEnvironment(Environment)`

### AnnotatedBeanDefinitionReader

public AnnotatedBeanDefinitionReader(org.springframework.beans.factory.support.BeanDefinitionRegistry registry, org.springframework.core.env.Environment environment)
Create a new `AnnotatedBeanDefinitionReader` for the given registry, using the given `Environment`.

Parameters:
  `registry` - the `BeanFactory` to load bean definitions into, in the form of a `BeanDefinitionRegistry`
  `environment` - the `Environment` to use when evaluating bean definition profiles.
Since:
  3.1

## Method Details

### getRegistry

public final org.springframework.beans.factory.support.BeanDefinitionRegistry getRegistry()
Get the BeanDefinitionRegistry that this reader operates on.

### setEnvironment

public void setEnvironment(org.springframework.core.env.Environment environment)
Set the `Environment` to use when evaluating whether `@Conditional`-annotated component classes should be registered.

The default is a `StandardEnvironment`.

### setBeanNameGenerator

public void setBeanNameGenerator(@Nullable org.springframework.beans.factory.support.BeanNameGenerator beanNameGenerator)
Set the `BeanNameGenerator` to use for detected bean classes.

The default is a `AnnotationBeanNameGenerator`.

### setScopeMetadataResolver

public void setScopeMetadataResolver(@Nullable ScopeMetadataResolver scopeMetadataResolver)
Set the `ScopeMetadataResolver` to use for registered component classes.

The default is an `AnnotationScopeMetadataResolver`.

### register

public void register(Class<?>... componentClasses)
Register one or more component classes to be processed.

Calls to `register` are idempotent; adding the same component class more than once has no additional effect.

Parameters:
  `componentClasses` - one or more component classes, for example, `@Configuration` classes

### registerBean

public void registerBean(Class<?> beanClass)
Register a bean from the given bean class, deriving its metadata from class-declared annotations.

Parameters:
  `beanClass` - the class of the bean

### registerBean

public void registerBean(Class<?> beanClass, @Nullable String name)
Register a bean from the given bean class, deriving its metadata from class-declared annotations.

Parameters:
  `beanClass` - the class of the bean
  `name` - an explicit name for the bean (or `null` for generating a default bean name)
Since:
  5.2

### registerBean

public void registerBean(Class<?> beanClass, Class<? extends Annotation>... qualifiers)
Register a bean from the given bean class, deriving its metadata from class-declared annotations.

Parameters:
  `beanClass` - the class of the bean
  `qualifiers` - specific qualifier annotations to consider, in addition to qualifiers at the bean class level

### registerBean

public void registerBean(Class<?> beanClass, @Nullable String name, Class<? extends Annotation>... qualifiers)
Register a bean from the given bean class, deriving its metadata from class-declared annotations.

Parameters:
  `beanClass` - the class of the bean
  `name` - an explicit name for the bean (or `null` for generating a default bean name)
  `qualifiers` - specific qualifier annotations to consider, in addition to qualifiers at the bean class level

### registerBean

public <T> void registerBean(Class<T> beanClass, @Nullable Supplier<T> supplier)
Register a bean from the given bean class, deriving its metadata from class-declared annotations, using the given supplier for obtaining a new instance (possibly declared as a lambda expression or method reference).

Parameters:
  `beanClass` - the class of the bean
  `supplier` - a callback for creating an instance of the bean (may be `null`)
Since:
  5.0

### registerBean

public <T> void registerBean(Class<T> beanClass, @Nullable String name, @Nullable Supplier<T> supplier)
Register a bean from the given bean class, deriving its metadata from class-declared annotations, using the given supplier for obtaining a new instance (possibly declared as a lambda expression or method reference).

Parameters:
  `beanClass` - the class of the bean
  `name` - an explicit name for the bean (or `null` for generating a default bean name)
  `supplier` - a callback for creating an instance of the bean (may be `null`)
Since:
  5.0

### registerBean

public <T> void registerBean(Class<T> beanClass, @Nullable String name, @Nullable Supplier<T> supplier, org.springframework.beans.factory.config.BeanDefinitionCustomizer... customizers)
Register a bean from the given bean class, deriving its metadata from class-declared annotations.

Parameters:
  `beanClass` - the class of the bean
  `name` - an explicit name for the bean (or `null` for generating a default bean name)
  `supplier` - a callback for creating an instance of the bean (may be `null`)
  `customizers` - one or more callbacks for customizing the factory's `BeanDefinition`, for example, setting a lazy-init or primary flag
Since:
  5.2