Class AbstractInjectionPointDependencyResolver
- java.lang.Object
-
- io.microsphere.spring.beans.factory.AbstractInjectionPointDependencyResolver
-
- All Implemented Interfaces:
InjectionPointDependencyResolver,org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanFactoryAware
- Direct Known Subclasses:
AnnotatedInjectionPointDependencyResolver,BeanMethodInjectionPointDependencyResolver,ConstructionInjectionPointDependencyResolver
public abstract class AbstractInjectionPointDependencyResolver extends java.lang.Object implements InjectionPointDependencyResolver, org.springframework.beans.factory.BeanFactoryAware
Abstract base class for implementingInjectionPointDependencyResolver.This class provides a foundation for resolving dependencies at injection points within Spring-managed beans. It handles common tasks such as bean factory awareness, dependency type resolution, and logging using the
Loggerinterface.Key Responsibilities
- Tracking and resolving dependencies based on injection points (fields, methods, constructors).
- Filtering resolvable dependency types via the configured
ResolvableDependencyTypeFilter. - Providing consistent logging capabilities through the injected logger.
- Supporting custom resolution logic by allowing subclasses to implement specific strategies.
Example Usage
Basic Implementation
public class MyDependencyResolver extends AbstractInjectionPointDependencyResolver { // Custom implementation details here }Resolving Dependencies from a Field
public void resolve(Field field, ConfigurableListableBeanFactory beanFactory, Set<String> dependentBeanNames) { String dependentBeanName = resolveDependentBeanNameByName(field, beanFactory); if (dependentBeanName == null) { resolveDependentBeanNamesByType(field::getGenericType, beanFactory, dependentBeanNames); } else { dependentBeanNames.add(dependentBeanName); } }Resolving Dependencies from a Method Parameter
public void resolve(Parameter parameter, ConfigurableListableBeanFactory beanFactory, Set<String> dependentBeanNames) { String dependentBeanName = resolveDependentBeanNameByName(parameter, beanFactory); if (dependentBeanName == null) { resolveDependentBeanNamesByType(parameter::getParameterizedType, beanFactory, dependentBeanNames); } else { dependentBeanNames.add(dependentBeanName); } }- Since:
- 1.0.0
- Author:
- Mercy
-
-
Field Summary
Fields Modifier and Type Field Description protected org.springframework.beans.factory.support.AutowireCandidateResolverautowireCandidateResolverprotected io.microsphere.logging.Loggerloggerprotected ResolvableDependencyTypeFilterresolvableDependencyTypeFilter
-
Constructor Summary
Constructors Constructor Description AbstractInjectionPointDependencyResolver()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidresolve(java.lang.reflect.Constructor constructor, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)Resolve the bean names as the dependencies from the specifiedconstructorvoidresolve(java.lang.reflect.Field field, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)Resolve the bean names as the dependencies from the specifiedfieldvoidresolve(java.lang.reflect.Method method, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)Resolve the bean names as the dependencies from the specifiedmethodvoidresolve(java.lang.reflect.Parameter parameter, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)Resolve the bean names as the dependencies from the specifiedparameterprotected java.lang.StringresolveDependentBeanNameByName(java.lang.reflect.Field field, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)protected java.lang.StringresolveDependentBeanNameByName(java.lang.reflect.Parameter parameter, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)protected java.lang.StringresolveDependentBeanNameByName(org.springframework.beans.factory.config.DependencyDescriptor dependencyDescriptor)protected voidresolveDependentBeanNamesByType(java.util.function.Supplier<java.lang.reflect.Type> typeSupplier, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)protected java.lang.Class<?>resolveDependentType(java.lang.reflect.Type type)voidsetBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
-
-
-
Field Detail
-
logger
protected final io.microsphere.logging.Logger logger
-
resolvableDependencyTypeFilter
@Nonnull protected ResolvableDependencyTypeFilter resolvableDependencyTypeFilter
-
autowireCandidateResolver
@Nonnull protected org.springframework.beans.factory.support.AutowireCandidateResolver autowireCandidateResolver
-
-
Method Detail
-
resolve
public void resolve(java.lang.reflect.Field field, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)Description copied from interface:InjectionPointDependencyResolverResolve the bean names as the dependencies from the specifiedfield- Specified by:
resolvein interfaceInjectionPointDependencyResolver- Parameters:
field- thefieldmay be an injection pointbeanFactory-ConfigurableListableBeanFactorydependentBeanNames- the dependent bean names to be manipulated
-
resolve
public void resolve(java.lang.reflect.Method method, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)Description copied from interface:InjectionPointDependencyResolverResolve the bean names as the dependencies from the specifiedmethod- Specified by:
resolvein interfaceInjectionPointDependencyResolver- Parameters:
method- themethodmay be an injection pointbeanFactory-ConfigurableListableBeanFactorydependentBeanNames- the dependent bean names to be manipulated
-
resolve
public void resolve(java.lang.reflect.Constructor constructor, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)Description copied from interface:InjectionPointDependencyResolverResolve the bean names as the dependencies from the specifiedconstructor- Specified by:
resolvein interfaceInjectionPointDependencyResolver- Parameters:
constructor- theconstructormay be an injection pointbeanFactory-ConfigurableListableBeanFactorydependentBeanNames- the dependent bean names to be manipulated
-
resolve
public void resolve(java.lang.reflect.Parameter parameter, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)Description copied from interface:InjectionPointDependencyResolverResolve the bean names as the dependencies from the specifiedparameter- Specified by:
resolvein interfaceInjectionPointDependencyResolver- Parameters:
parameter- the specifiedparameterof a method or constructor was annotated by the annotationbeanFactory-ConfigurableListableBeanFactorydependentBeanNames- the dependent bean names to be manipulated
-
setBeanFactory
public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) throws org.springframework.beans.BeansException- Specified by:
setBeanFactoryin interfaceorg.springframework.beans.factory.BeanFactoryAware- Throws:
org.springframework.beans.BeansException
-
resolveDependentBeanNameByName
protected java.lang.String resolveDependentBeanNameByName(java.lang.reflect.Field field, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
-
resolveDependentBeanNameByName
protected java.lang.String resolveDependentBeanNameByName(java.lang.reflect.Parameter parameter, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
-
resolveDependentBeanNameByName
protected java.lang.String resolveDependentBeanNameByName(org.springframework.beans.factory.config.DependencyDescriptor dependencyDescriptor)
-
resolveDependentBeanNamesByType
protected void resolveDependentBeanNamesByType(java.util.function.Supplier<java.lang.reflect.Type> typeSupplier, org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory, java.util.Set<java.lang.String> dependentBeanNames)
-
resolveDependentType
protected java.lang.Class<?> resolveDependentType(java.lang.reflect.Type type)
-
-