public class

Jsr330ScopeMetadataResolver

extends Object
implements ScopeMetadataResolver
java.lang.Object
   ↳ org.springframework.context.annotation.Jsr330ScopeMetadataResolver

Class Overview

Simple ScopeMetadataResolver implementation that follows JSR-330 scoping rules: defaulting to prototype scope unless javax.inject.Singleton is present.

This scope resolver can be used with ClassPathBeanDefinitionScanner and AnnotatedBeanDefinitionReader for standard JSR-330 compliance. However, in practice, you will typically use Spring's rich default scoping instead - or extend this resolver with custom scoping annotations that point to extended Spring scopes.

Summary

Public Constructors
Jsr330ScopeMetadataResolver()
Public Methods
final void registerScope(Class annotationType, String scopeName)
Register an extended JSR-330 scope annotation, mapping it onto a specific Spring scope by name.
final void registerScope(String annotationType, String scopeName)
Register an extended JSR-330 scope annotation, mapping it onto a specific Spring scope by name.
ScopeMetadata resolveScopeMetadata(BeanDefinition definition)
Resolve the ScopeMetadata appropriate to the supplied bean definition.
Protected Methods
String resolveScopeName(String annotationType)
Resolve the given annotation type into a named Spring scope.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.context.annotation.ScopeMetadataResolver

Public Constructors

public Jsr330ScopeMetadataResolver ()

Public Methods

public final void registerScope (Class annotationType, String scopeName)

Register an extended JSR-330 scope annotation, mapping it onto a specific Spring scope by name.

Parameters
annotationType the JSR-330 annotation type as a Class
scopeName the Spring scope name

public final void registerScope (String annotationType, String scopeName)

Register an extended JSR-330 scope annotation, mapping it onto a specific Spring scope by name.

Parameters
annotationType the JSR-330 annotation type by name
scopeName the Spring scope name

public ScopeMetadata resolveScopeMetadata (BeanDefinition definition)

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 attributeNames() of the supplied definition.

Parameters
definition the target bean definition
Returns
  • the relevant scope metadata; never null

Protected Methods

protected String resolveScopeName (String annotationType)

Resolve the given annotation type into a named Spring scope.

The default implementation simply checks against registered scopes. Can be overridden for custom mapping rules, e.g. naming conventions.

Parameters
annotationType the JSR-330 annotation type
Returns
  • the Spring scope name