Package org.springframework.beans.factory.support

# Class GenericTypeAwareAutowireCandidateResolver

java.lang.Object
org.springframework.beans.factory.support.SimpleAutowireCandidateResolver
org.springframework.beans.factory.support.GenericTypeAwareAutowireCandidateResolver

All Implemented Interfaces:
  `Cloneable`, `Aware`, `BeanFactoryAware`, `AutowireCandidateResolver`

Direct Known Subclasses:
  `QualifierAnnotationAutowireCandidateResolver`

public class GenericTypeAwareAutowireCandidateResolver extends SimpleAutowireCandidateResolver implements BeanFactoryAware, Cloneable
Basic `AutowireCandidateResolver` that performs a full generic type match with the candidate's type if the dependency is declared as a generic type (for example, `Repository<Customer>`).

This is the base class for `QualifierAnnotationAutowireCandidateResolver`, providing an implementation all non-annotation-based resolution steps at this level.

Since:
  4.0
Author:
  Juergen Hoeller

## Field Summary

### Fields inherited from class org.springframework.beans.factory.support.SimpleAutowireCandidateResolver

`INSTANCE`

## Constructor Summary

Constructors
Constructor
Description
`GenericTypeAwareAutowireCandidateResolver()`

## Method Summary

Modifier and Type
Method
Description
`protected boolean`
`checkGenericTypeMatch(BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor)`
Match the given dependency type with its generic type information against the given candidate bean definition.
`AutowireCandidateResolver`
`cloneIfNecessary()`
This implementation clones all instance fields through standard `Cloneable` support, allowing for subsequent reconfiguration of the cloned instance through a fresh `setBeanFactory(org.springframework.beans.factory.BeanFactory)` call.
`protected final BeanFactory`
`getBeanFactory()`
`protected RootBeanDefinition`
`getResolvedDecoratedDefinition(RootBeanDefinition rbd)`
`protected org.springframework.core.ResolvableType`
`getReturnTypeForFactoryMethod(RootBeanDefinition rbd, DependencyDescriptor descriptor)`
`boolean`
`isAutowireCandidate(BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor)`
Determine whether the given bean definition qualifies as an autowire candidate for the given dependency.
`void`
`setBeanFactory(BeanFactory beanFactory)`
Callback that supplies the owning factory to a bean instance.

### Methods inherited from class org.springframework.beans.factory.support.SimpleAutowireCandidateResolver

`resolveAutowireCandidates, resolveAutowireCandidates`

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

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

### Methods inherited from interface org.springframework.beans.factory.support.AutowireCandidateResolver

`getLazyResolutionProxyClass, getLazyResolutionProxyIfNecessary, getSuggestedName, getSuggestedValue, hasQualifier, isRequired`

## Constructor Details

### GenericTypeAwareAutowireCandidateResolver

public GenericTypeAwareAutowireCandidateResolver()

## Method Details

### setBeanFactory

public void setBeanFactory(BeanFactory beanFactory)
Description copied from interface: `BeanFactoryAware`
Callback that supplies the owning factory to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as `InitializingBean.afterPropertiesSet()` or a custom init-method.

Specified by:
  `setBeanFactory` in interface `BeanFactoryAware`
Parameters:
  `beanFactory` - owning BeanFactory (never `null`). The bean can immediately call methods on the factory.
See Also:
  - `BeanInitializationException`

### getBeanFactory

@Nullable protected final BeanFactory getBeanFactory()

### isAutowireCandidate

public boolean isAutowireCandidate(BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor)
Description copied from interface: `AutowireCandidateResolver`
Determine whether the given bean definition qualifies as an autowire candidate for the given dependency.

The default implementation checks `BeanDefinition.isAutowireCandidate()`.

Specified by:
  `isAutowireCandidate` in interface `AutowireCandidateResolver`
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:
  - `BeanDefinition.isAutowireCandidate()`

### checkGenericTypeMatch

protected boolean checkGenericTypeMatch(BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor)
Match the given dependency type with its generic type information against the given candidate bean definition.

### getResolvedDecoratedDefinition

@Nullable protected RootBeanDefinition getResolvedDecoratedDefinition(RootBeanDefinition rbd)

### getReturnTypeForFactoryMethod

@Nullable protected org.springframework.core.ResolvableType getReturnTypeForFactoryMethod(RootBeanDefinition rbd, DependencyDescriptor descriptor)

### cloneIfNecessary

public AutowireCandidateResolver cloneIfNecessary()
This implementation clones all instance fields through standard `Cloneable` support, allowing for subsequent reconfiguration of the cloned instance through a fresh `setBeanFactory(org.springframework.beans.factory.BeanFactory)` call.

Specified by:
  `cloneIfNecessary` in interface `AutowireCandidateResolver`
Overrides:
  `cloneIfNecessary` in class `SimpleAutowireCandidateResolver`
See Also:
  - `Object.clone()`