org.springframework.context.annotation
Class AnnotationScopeMetadataResolver

java.lang.Object
  extended by org.springframework.context.annotation.AnnotationScopeMetadataResolver
All Implemented Interfaces:
ScopeMetadataResolver

public class AnnotationScopeMetadataResolver
extends java.lang.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
private  ScopedProxyMode defaultProxyMode
           
protected  java.lang.Class<? extends java.lang.annotation.Annotation> scopeAnnotationType
           
 
Constructor Summary
AnnotationScopeMetadataResolver()
          Create a new instance of the AnnotationScopeMetadataResolver class.
AnnotationScopeMetadataResolver(ScopedProxyMode defaultProxyMode)
          Create a new instance of the AnnotationScopeMetadataResolver class.
 
Method Summary
 ScopeMetadata resolveScopeMetadata(BeanDefinition definition)
          Resolve the ScopeMetadata appropriate to the supplied bean definition.
 void setScopeAnnotationType(java.lang.Class<? extends java.lang.annotation.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 java.lang.Class<? extends java.lang.annotation.Annotation> scopeAnnotationType

defaultProxyMode

private final ScopedProxyMode defaultProxyMode
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(java.lang.Class<? extends java.lang.annotation.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