org.springframework.context.annotation

## Class AnnotationScopeMetadataResolver

- java.lang.Object
- - org.springframework.context.annotation.AnnotationScopeMetadataResolver

- All Implemented Interfaces:
    ScopeMetadataResolver

      public class AnnotationScopeMetadataResolver
      extends Object
      implements ScopeMetadataResolver

  A `ScopeMetadataResolver` implementation that by default checks for the presence of Spring's `Scope` annotation on the bean class.

  The exact type of annotation that is checked for is configurable via the `setScopeAnnotationType(Class)` property.

  Since:
    2.5
  Author:
    Mark Fisher, Juergen Hoeller
  See Also:
    `Scope`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Class<? extends Annotation>` | `scopeAnnotationType`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AnnotationScopeMetadataResolver()` Create a new instance of the `AnnotationScopeMetadataResolver` class.
    `AnnotationScopeMetadataResolver(ScopedProxyMode defaultProxyMode)` Create a new instance of the `AnnotationScopeMetadataResolver` class.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ScopeMetadata` | `resolveScopeMetadata(BeanDefinition definition)` Resolve the `ScopeMetadata` appropriate to the supplied bean `definition`.
    `void` | `setScopeAnnotationType(Class<? extends Annotation> scopeAnnotationType)` Set the type of annotation that is checked for by this `AnnotationScopeMetadataResolver`.

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

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

- - ### Field Detail

    - #### scopeAnnotationType

          protected Class<? extends Annotation> scopeAnnotationType

  - ### Constructor Detail

    - #### AnnotationScopeMetadataResolver

          public AnnotationScopeMetadataResolver()

      Create a new instance of the `AnnotationScopeMetadataResolver` class.
      See Also:
        `AnnotationScopeMetadataResolver(ScopedProxyMode)`, `ScopedProxyMode.NO`

    - #### AnnotationScopeMetadataResolver

          public AnnotationScopeMetadataResolver(ScopedProxyMode defaultProxyMode)

      Create a new instance of the `AnnotationScopeMetadataResolver` class.
      Parameters:
        `defaultProxyMode` - the desired scoped-proxy mode

  - ### Method Detail

    - #### setScopeAnnotationType

          public void setScopeAnnotationType(Class<? extends Annotation> scopeAnnotationType)

      Set the type of annotation that is checked for by this `AnnotationScopeMetadataResolver`.
      Parameters:
        `scopeAnnotationType` - the target annotation type

    - #### resolveScopeMetadata

          public ScopeMetadata resolveScopeMetadata(BeanDefinition definition)

      Description copied from interface: `ScopeMetadataResolver`
      Resolve the `ScopeMetadata` appropriate to the supplied bean `definition`.

      Implementations can of course use any strategy they like to determine the scope metadata, but some implementations that spring immediately to mind might be to use source level annotations present on `the class` of the supplied `definition`, or to use metadata present in the `AttributeAccessor.attributeNames()` of the supplied `definition`.

      Specified by:
        `resolveScopeMetadata` in interface `ScopeMetadataResolver`
      Parameters:
        `definition` - the target bean definition
      Returns:
        the relevant scope metadata; never `null`