Interface AutowireCandidateResolver

All Known Implementing Classes:
ContextAnnotationAutowireCandidateResolver, GenericTypeAwareAutowireCandidateResolver, QualifierAnnotationAutowireCandidateResolver, SimpleAutowireCandidateResolver

public interface AutowireCandidateResolver
Strategy interface for determining whether a specific bean definition qualifies as an autowire candidate for a specific dependency.
Since:
2.5
Author:
Juergen Hoeller, Mark Fisher
  • Method Details

    • isAutowireCandidate

      default boolean isAutowireCandidate(BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor)
      Determine whether the given bean definition qualifies as an autowire candidate for the given dependency.

      The default implementation checks BeanDefinition.isAutowireCandidate().

      Parameters:
      bdHolder - the bean definition including bean name and aliases
      descriptor - the descriptor for the target method parameter or field
      Returns:
      whether the bean definition qualifies as autowire candidate
      See Also:
    • isRequired

      default boolean isRequired(DependencyDescriptor descriptor)
      Determine whether the given descriptor is effectively required.

      The default implementation checks DependencyDescriptor.isRequired().

      Parameters:
      descriptor - the descriptor for the target method parameter or field
      Returns:
      whether the descriptor is marked as required or possibly indicating non-required status some other way (e.g. through a parameter annotation)
      Since:
      5.0
      See Also:
    • hasQualifier

      default boolean hasQualifier(DependencyDescriptor descriptor)
      Determine whether the given descriptor declares a qualifier beyond the type (typically - but not necessarily - a specific kind of annotation).

      The default implementation returns false.

      Parameters:
      descriptor - the descriptor for the target method parameter or field
      Returns:
      whether the descriptor declares a qualifier, narrowing the candidate status beyond the type match
      Since:
      5.1
      See Also:
    • getSuggestedValue

      @Nullable default Object getSuggestedValue(DependencyDescriptor descriptor)
      Determine whether a default value is suggested for the given dependency.

      The default implementation simply returns null.

      Parameters:
      descriptor - the descriptor for the target method parameter or field
      Returns:
      the value suggested (typically an expression String), or null if none found
      Since:
      3.0
    • getLazyResolutionProxyIfNecessary

      @Nullable default Object getLazyResolutionProxyIfNecessary(DependencyDescriptor descriptor, @Nullable String beanName)
      Build a proxy for lazy resolution of the actual dependency target, if demanded by the injection point.

      The default implementation simply returns null.

      Parameters:
      descriptor - the descriptor for the target method parameter or field
      beanName - the name of the bean that contains the injection point
      Returns:
      the lazy resolution proxy for the actual dependency target, or null if straight resolution is to be performed
      Since:
      4.0
    • getLazyResolutionProxyClass

      @Nullable default Class<?> getLazyResolutionProxyClass(DependencyDescriptor descriptor, @Nullable String beanName)
      Determine the proxy class for lazy resolution of the dependency target, if demanded by the injection point.

      The default implementation simply returns null.

      Parameters:
      descriptor - the descriptor for the target method parameter or field
      beanName - the name of the bean that contains the injection point
      Returns:
      the lazy resolution proxy class for the dependency target, if any
      Since:
      6.0
    • cloneIfNecessary

      default AutowireCandidateResolver cloneIfNecessary()
      Return a clone of this resolver instance if necessary, retaining its local configuration and allowing for the cloned instance to get associated with a new bean factory, or this original instance if there is no such state.

      The default implementation creates a separate instance via the default class constructor, assuming no specific configuration state to copy. Subclasses may override this with custom configuration state handling or with standard Cloneable support (as implemented by Spring's own configurable AutowireCandidateResolver variants), or simply return this (as in SimpleAutowireCandidateResolver).

      Since:
      5.2.7
      See Also: