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
`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
`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`