# Package org.springframework.context.annotation

Annotation support for the Application Context, including JSR-250 "common" annotations, component-scanning, and Java-based metadata for creating Spring-managed objects.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  ImportAware | Interface to be implemented by any @`Configuration` class that wishes to be injected with the `AnnotationMetadata` of the @`Configuration` class that imported it.
  ImportBeanDefinitionRegistrar | Interface to be implemented by types that register additional bean definitions when processing @`Configuration` classes.
  ImportSelector | Interface to be implemented by types that determine which @`Configuration` class(es) should be imported based on a given selection criteria, usually one or more annotation attributes.
  LoadTimeWeavingConfigurer | Interface to be implemented by `@Configuration` classes annotated with `@EnableLoadTimeWeaving` that wish to customize the `LoadTimeWeaver` instance to be used.
  ScopeMetadataResolver | Strategy interface for resolving the scope of bean definitions.

- Class Summary
  Class | Description
  --- | ---
  AdviceModeImportSelector<A extends Annotation> | Convenient base class for `ImportSelector` implementations that select imports based on an `AdviceMode` value from an annotation (such as the `@Enable*` annotations).
  AnnotatedBeanDefinitionReader | Convenient adapter for programmatic registration of annotated bean classes.
  AnnotationBeanNameGenerator | `BeanNameGenerator` implementation for bean classes annotated with the `@Component` annotation or with another annotation that is itself annotated with `@Component` as a meta-annotation.
  AnnotationConfigApplicationContext | Standalone application context, accepting annotated classes as input - in particular `@Configuration`-annotated classes, but also plain `@Component` types and JSR-330 compliant classes using `javax.inject` annotations.
  AnnotationConfigBeanDefinitionParser | Parser for the <context:annotation-config/> element.
  AnnotationConfigUtils | Utility class that allows for convenient registration of common `BeanPostProcessor` and `BeanFactoryPostProcessor` definitions for annotation-based configuration.
  AnnotationScopeMetadataResolver | A `ScopeMetadataResolver` implementation that by default checks for the presence of Spring's `Scope` annotation on the bean class.
  AutoProxyRegistrar | Registers an auto proxy creator against the current `BeanDefinitionRegistry` as appropriate based on an `@Enable*` annotation having `mode` and `proxyTargetClass` attributes set to the correct values.
  ClassPathBeanDefinitionScanner | A bean definition scanner that detects bean candidates on the classpath, registering corresponding bean definitions with a given registry (`BeanFactory` or `ApplicationContext`).
  ClassPathScanningCandidateComponentProvider | A component provider that scans the classpath from a base package.
  CommonAnnotationBeanPostProcessor | `BeanPostProcessor` implementation that supports common Java annotations out of the box, in particular the JSR-250 annotations in the `javax.annotation` package.
  ComponentScanBeanDefinitionParser | Parser for the `<context:component-scan/>` element.
  ConfigurationClassPostProcessor | `BeanFactoryPostProcessor` used for bootstrapping processing of `@Configuration` classes.
  Jsr330ScopeMetadataResolver | Simple `ScopeMetadataResolver` implementation that follows JSR-330 scoping rules: defaulting to prototype scope unless `Singleton` is present.
  LoadTimeWeavingConfiguration | `@Configuration` class that registers a `LoadTimeWeaver` bean.
  MBeanExportConfiguration | `@Configuration` class that registers a `AnnotationMBeanExporter` bean.
  ScannedGenericBeanDefinition | Extension of the `GenericBeanDefinition` class, based on an ASM ClassReader, with support for annotation metadata exposed through the `AnnotatedBeanDefinition` interface.
  ScopeMetadata | Describes scope characteristics for a Spring-managed bean including the scope name and the scoped-proxy behavior.

- Enum Summary
  Enum | Description
  --- | ---
  AdviceMode | Enumeration used to determine whether JDK proxy-based or AspectJ weaving-based advice should be applied.
  EnableLoadTimeWeaving.AspectJWeaving |
  FilterType | Enumeration of the type filters that may be used in conjunction with `@ComponentScan`.
  ScopedProxyMode | Enumerates the various scoped-proxy options.

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  Bean | Indicates that a method produces a bean to be managed by the Spring container.
  ComponentScan | Configures component scanning directives for use with @`Configuration` classes.
  ComponentScan.Filter | Declares the type filter to be used as an include filter or exclude filter.
  Configuration | Indicates that a class declares one or more `@Bean` methods and may be processed by the Spring container to generate bean definitions and service requests for those beans at runtime, for example:
       @Configuration
       public class AppConfig {
           @Bean
           public MyBean myBean() {
               // instantiate, configure and return bean ...
  DependsOn | Beans on which the current bean depends.
  EnableAspectJAutoProxy | Enables support for handling components marked with AspectJ's `@Aspect` annotation, similar to functionality found in Spring's `<aop:aspectj-autoproxy>` XML element.
  EnableLoadTimeWeaving | Activates a Spring `LoadTimeWeaver` for this application context, available as a bean with the name "loadTimeWeaver", similar to the `<context:load-time-weaver>` element in Spring XML.
  EnableMBeanExport | Enables default exporting of all standard `MBean`s from the Spring context, as well as well all `@ManagedResource` annotated beans.
  Import | Indicates one or more `@Configuration` classes to import.
  ImportResource | Indicates one or more resources containing bean definitions to import.
  Lazy | Indicates whether a bean is to be lazily initialized.
  Primary | Indicates that a bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency.
  Profile | Indicates that a component is eligible for registration when one or more specified profiles are active.
  PropertySource | Annotation providing a convenient and declarative mechanism for adding a `PropertySource` to Spring's `Environment`.
  Role | Indicates the 'role' hint for a given bean.
  Scope | When used as a type-level annotation in conjunction with the `Component` annotation, indicates the name of a scope to use for instances of the annotated type.

## Package org.springframework.context.annotation Description

Annotation support for the Application Context, including JSR-250 "common" annotations, component-scanning, and Java-based metadata for creating Spring-managed objects.