# Uses of Package
org.springframework.context.annotation

- Packages that use org.springframework.context.annotation
  Package | Description
  --- | ---
  org.springframework.cache.annotation | Annotations and supporting classes for declarative cache management.
  org.springframework.cache.aspectj |
  org.springframework.cache.jcache.config | Support package for declarative JSR-107 caching configuration.
  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.
  org.springframework.context.annotation.aspectj |
  org.springframework.jms.annotation | Annotations and support classes for declarative JMS listener endpoints.
  org.springframework.messaging.simp.config | Configuration support for WebSocket messaging using higher level messaging protocols.
  org.springframework.scheduling.annotation | Annotation support for asynchronous method execution.
  org.springframework.scheduling.aspectj |
  org.springframework.transaction.annotation | Spring's support for annotation-based transaction demarcation.
  org.springframework.transaction.aspectj |
  org.springframework.web.context.annotation | Provides convenience annotations for web scopes.
  org.springframework.web.context.support | Classes supporting the `org.springframework.web.context` package, such as WebApplicationContext implementations and various utility classes.
  org.springframework.web.reactive.config | Spring WebFlux configuration infrastructure.
  org.springframework.web.servlet.config.annotation | Annotation-based setup for Spring MVC.
  org.springframework.web.socket.config.annotation | Support for annotation-based WebSocket setup in configuration classes.

- Classes in org.springframework.context.annotation used by org.springframework.cache.annotation
  Class and Description
  AdviceMode Enumeration used to determine whether JDK proxy-based or AspectJ weaving-based advice should be applied.
  AdviceModeImportSelector Convenient base class for `ImportSelector` implementations that select imports based on an `AdviceMode` value from an annotation (such as the `@Enable*` annotations).
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  Import Indicates one or more component classes to import — typically `@Configuration` classes.
  ImportAware Interface to be implemented by any @`Configuration` class that wishes to be injected with the `AnnotationMetadata` of the @`Configuration` class that imported it.
  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.
  Role Indicates the 'role' hint for a given bean.

- Classes in org.springframework.context.annotation used by org.springframework.cache.aspectj
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  ImportAware Interface to be implemented by any @`Configuration` class that wishes to be injected with the `AnnotationMetadata` of the @`Configuration` class that imported it.
  Role Indicates the 'role' hint for a given bean.

- Classes in org.springframework.context.annotation used by org.springframework.cache.jcache.config
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  ImportAware Interface to be implemented by any @`Configuration` class that wishes to be injected with the `AnnotationMetadata` of the @`Configuration` class that imported it.
  Role Indicates the 'role' hint for a given bean.

- Classes in org.springframework.context.annotation used by org.springframework.context.annotation
  Class and Description
  AdviceMode Enumeration used to determine whether JDK proxy-based or AspectJ weaving-based advice should be applied.
  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.
  AnnotationConfigRegistry Common interface for annotation config application contexts, defining `AnnotationConfigRegistry.register(java.lang.Class<?>...)` and `AnnotationConfigRegistry.scan(java.lang.String...)` methods.
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 for candidate components starting from a specified base package.
  CommonAnnotationBeanPostProcessor.LookupElement Class representing generic injection information about an annotated field or setter method, supporting @Resource and related annotations.
  Condition A single `condition` that must be matched in order for a component to be registered.
  Conditional Indicates that a component is only eligible for registration when all specified conditions match.
  ConditionContext Context information for use by `Condition` implementations.
  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 ...
  ConfigurationCondition.ConfigurationPhase The various configuration phases where the condition could be evaluated.
  DeferredImportSelector A variation of `ImportSelector` that runs after all `@Configuration` beans have been processed.
  DeferredImportSelector.Group Interface used to group results from different import selectors.
  DeferredImportSelector.Group.Entry An entry that holds the `AnnotationMetadata` of the importing `Configuration` class and the class name to import.
  EnableLoadTimeWeaving.AspectJWeaving AspectJ weaving enablement options.
  FilterType Enumeration of the type filters that may be used in conjunction with `@ComponentScan`.
  FullyQualifiedAnnotationBeanNameGenerator An extension of `AnnotationBeanNameGenerator` that uses the fully qualified class name as the default bean name if an explicit bean name is not supplied via a supported type-level annotation such as `@Component` (see `AnnotationBeanNameGenerator` for details on supported annotations).
  Import Indicates one or more component classes to import — typically `@Configuration` classes.
  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.
  MBeanExportConfiguration.SpecificPlatform Specific platforms that might need custom MBean handling.
  Role Indicates the 'role' hint for a given bean.
  ScopedProxyMode Enumerates the various scoped-proxy options.
  ScopeMetadata Describes scope characteristics for a Spring-managed bean including the scope name and the scoped-proxy behavior.
  ScopeMetadataResolver Strategy interface for resolving the scope of bean definitions.

- Classes in org.springframework.context.annotation used by org.springframework.context.annotation.aspectj
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  Import Indicates one or more component classes to import — typically `@Configuration` classes.
  Role Indicates the 'role' hint for a given bean.

- Classes in org.springframework.context.annotation used by org.springframework.jms.annotation
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  Import Indicates one or more component classes to import — typically `@Configuration` classes.
  Role Indicates the 'role' hint for a given bean.

- Classes in org.springframework.context.annotation used by org.springframework.messaging.simp.config
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.

- Classes in org.springframework.context.annotation used by org.springframework.scheduling.annotation
  Class and Description
  AdviceMode Enumeration used to determine whether JDK proxy-based or AspectJ weaving-based advice should be applied.
  AdviceModeImportSelector Convenient base class for `ImportSelector` implementations that select imports based on an `AdviceMode` value from an annotation (such as the `@Enable*` annotations).
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  Import Indicates one or more component classes to import — typically `@Configuration` classes.
  ImportAware Interface to be implemented by any @`Configuration` class that wishes to be injected with the `AnnotationMetadata` of the @`Configuration` class that imported it.
  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.
  Role Indicates the 'role' hint for a given bean.

- Classes in org.springframework.context.annotation used by org.springframework.scheduling.aspectj
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  ImportAware Interface to be implemented by any @`Configuration` class that wishes to be injected with the `AnnotationMetadata` of the @`Configuration` class that imported it.
  Role Indicates the 'role' hint for a given bean.

- Classes in org.springframework.context.annotation used by org.springframework.transaction.annotation
  Class and Description
  AdviceMode Enumeration used to determine whether JDK proxy-based or AspectJ weaving-based advice should be applied.
  AdviceModeImportSelector Convenient base class for `ImportSelector` implementations that select imports based on an `AdviceMode` value from an annotation (such as the `@Enable*` annotations).
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  Import Indicates one or more component classes to import — typically `@Configuration` classes.
  ImportAware Interface to be implemented by any @`Configuration` class that wishes to be injected with the `AnnotationMetadata` of the @`Configuration` class that imported it.
  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.
  Role Indicates the 'role' hint for a given bean.

- Classes in org.springframework.context.annotation used by org.springframework.transaction.aspectj
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  ImportAware Interface to be implemented by any @`Configuration` class that wishes to be injected with the `AnnotationMetadata` of the @`Configuration` class that imported it.
  Role Indicates the 'role' hint for a given bean.

- Classes in org.springframework.context.annotation used by org.springframework.web.context.annotation
  Class and Description
  Scope When used as a type-level annotation in conjunction with `@Component`, `@Scope` indicates the name of a scope to use for instances of the annotated type.

- Classes in org.springframework.context.annotation used by org.springframework.web.context.support
  Class and Description
  AnnotatedBeanDefinitionReader Convenient adapter for programmatic registration of bean classes.
  AnnotationConfigRegistry Common interface for annotation config application contexts, defining `AnnotationConfigRegistry.register(java.lang.Class<?>...)` and `AnnotationConfigRegistry.scan(java.lang.String...)` methods.
  ClassPathBeanDefinitionScanner A bean definition scanner that detects bean candidates on the classpath, registering corresponding bean definitions with a given registry (`BeanFactory` or `ApplicationContext`).
  ScopeMetadataResolver Strategy interface for resolving the scope of bean definitions.

- Classes in org.springframework.context.annotation used by org.springframework.web.reactive.config
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  Import Indicates one or more component classes to import — typically `@Configuration` classes.

- Classes in org.springframework.context.annotation used by org.springframework.web.servlet.config.annotation
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  Import Indicates one or more component classes to import — typically `@Configuration` classes.
  Lazy Indicates whether a bean is to be lazily initialized.

- Classes in org.springframework.context.annotation used by org.springframework.web.socket.config.annotation
  Class and Description
  Bean Indicates that a method produces a bean to be managed by the Spring container.
  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 ...
  Import Indicates one or more component classes to import — typically `@Configuration` classes.