-
Notifications
You must be signed in to change notification settings - Fork 39
io microsphere spring beans factory AbstractInjectionPointDependencyResolver
Type: Class | Module: microsphere-spring-context | Package: io.microsphere.spring.beans.factory | Since: 1.0.0
Abstract base class for implementing InjectionPointDependencyResolver.
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
Logger interface.
- 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.
`public class MyDependencyResolver extends AbstractInjectionPointDependencyResolver {
// Custom implementation details here
`
}
`public void resolve(Field field, ConfigurableListableBeanFactory beanFactory, Set dependentBeanNames) {
String dependentBeanName = resolveDependentBeanNameByName(field, beanFactory);
if (dependentBeanName == null) {
resolveDependentBeanNamesByType(field::getGenericType, beanFactory, dependentBeanNames);
` else {
dependentBeanNames.add(dependentBeanName);
}
}
}
`public void resolve(Parameter parameter, ConfigurableListableBeanFactory beanFactory, Set dependentBeanNames) {
String dependentBeanName = resolveDependentBeanNameByName(parameter, beanFactory);
if (dependentBeanName == null) {
resolveDependentBeanNamesByType(parameter::getParameterizedType, beanFactory, dependentBeanNames);
` else {
dependentBeanNames.add(dependentBeanName);
}
}
}
public abstract class AbstractInjectionPointDependencyResolver implements InjectionPointDependencyResolver, BeanFactoryAwareAuthor: Mercy
-
Introduced in:
1.0.0 -
Current Project Version:
0.2.27-SNAPSHOT
This component is tested and compatible with the following Java versions:
| Java Version | Status |
|---|---|
| Java 17 | ✅ Compatible |
| Java 21 | ✅ Compatible |
| Java 25 | ✅ Compatible |
public class MyDependencyResolver extends AbstractInjectionPointDependencyResolver {
// Custom implementation details here
}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);
}
}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);
}
}AbstractInjectionPointDependencyResolver resolver = ...;
resolver.setBeanFactory(beanFactory);
Field field = ReflectionUtils.findField(MyConfig.class, "myDependency");
Set<String> dependentBeanNames = new LinkedHashSet<>();
resolver.resolve(field, beanFactory, dependentBeanNames);
// dependentBeanNames now contains the bean names matching the fieldAbstractInjectionPointDependencyResolver resolver = ...;
resolver.setBeanFactory(beanFactory);
Method method = MethodUtils.findMethod(MyConfig.class, "user", MyDependency[].class);
Set<String> dependentBeanNames = new LinkedHashSet<>();
resolver.resolve(method, beanFactory, dependentBeanNames);
// dependentBeanNames now contains bean names matching the method parametersAbstractInjectionPointDependencyResolver resolver = ...;
resolver.setBeanFactory(beanFactory);
Constructor<?> constructor = ConstructorUtils.findConstructor(MyConfig.class, Map.class);
Set<String> dependentBeanNames = new LinkedHashSet<>();
resolver.resolve(constructor, beanFactory, dependentBeanNames);
// dependentBeanNames now contains bean names matching the constructor parametersAbstractInjectionPointDependencyResolver resolver = ...;
resolver.setBeanFactory(beanFactory);
Method method = MethodUtils.findMethod(MyConfig.class, "user", MyDependency[].class);
Parameter parameter = method.getParameters()[0];
Set<String> dependentBeanNames = new LinkedHashSet<>();
resolver.resolve(parameter, beanFactory, dependentBeanNames);
// dependentBeanNames now contains bean names matching the parameter typeAbstractInjectionPointDependencyResolver resolver = new MyDependencyResolver();
resolver.setBeanFactory(beanFactory);
// resolver is now ready to resolve injection point dependenciesAdd the following dependency to your pom.xml:
<dependency>
<groupId>io.github.microsphere-projects</groupId>
<artifactId>microsphere-spring-context</artifactId>
<version>${microsphere-spring.version}</version>
</dependency>Tip: Use the BOM (
microsphere-spring-dependencies) for consistent version management. See the Getting Started guide.
import io.microsphere.spring.beans.factory.AbstractInjectionPointDependencyResolver;| Method | Description |
|---|---|
resolve |
Resolve the dependent bean names from the given Field injection point. |
resolve |
Resolve the dependent bean names from the given Method injection point. |
resolve |
Resolve the dependent bean names from the given Constructor injection point. |
resolve |
Resolve the dependent bean names from the given Parameter injection point. |
setBeanFactory |
Initialize this resolver by extracting the ResolvableDependencyTypeFilter
|
public void resolve(Field field, ConfigurableListableBeanFactory beanFactory, Set<String> dependentBeanNames)Resolve the dependent bean names from the given Field injection point.
First attempts to resolve by name using the AutowireCandidateResolver.
If no name is suggested, falls back to resolving by the field's generic type.
`AbstractInjectionPointDependencyResolver resolver = ...; resolver.setBeanFactory(beanFactory); Field field = ReflectionUtils.findField(MyConfig.class, "myDependency"); Set dependentBeanNames = new LinkedHashSet<>(); resolver.resolve(field, beanFactory, dependentBeanNames); // dependentBeanNames now contains the bean names matching the field `
public void resolve(Method method, ConfigurableListableBeanFactory beanFactory, Set<String> dependentBeanNames)Resolve the dependent bean names from the given Method injection point.
Iterates over each parameter of the method and delegates resolution to
#resolve(Parameter, ConfigurableListableBeanFactory, Set).
Methods with no parameters are ignored.
`AbstractInjectionPointDependencyResolver resolver = ...; resolver.setBeanFactory(beanFactory); Method method = MethodUtils.findMethod(MyConfig.class, "user", MyDependency[].class); Set dependentBeanNames = new LinkedHashSet<>(); resolver.resolve(method, beanFactory, dependentBeanNames); // dependentBeanNames now contains bean names matching the method parameters `
public void resolve(Constructor constructor, ConfigurableListableBeanFactory beanFactory, Set<String> dependentBeanNames)Resolve the dependent bean names from the given Constructor injection point.
Iterates over each parameter of the constructor and delegates resolution to
#resolve(Parameter, ConfigurableListableBeanFactory, Set).
Constructors with no parameters are ignored.
`AbstractInjectionPointDependencyResolver resolver = ...; resolver.setBeanFactory(beanFactory); Constructor constructor = ConstructorUtils.findConstructor(MyConfig.class, Map.class); Set dependentBeanNames = new LinkedHashSet<>(); resolver.resolve(constructor, beanFactory, dependentBeanNames); // dependentBeanNames now contains bean names matching the constructor parameters `
public void resolve(Parameter parameter, ConfigurableListableBeanFactory beanFactory, Set<String> dependentBeanNames)Resolve the dependent bean names from the given Parameter injection point.
First attempts to resolve by name using the AutowireCandidateResolver.
If no name is suggested, falls back to resolving by the parameter's parameterized type.
`AbstractInjectionPointDependencyResolver resolver = ...; resolver.setBeanFactory(beanFactory); Method method = MethodUtils.findMethod(MyConfig.class, "user", MyDependency[].class); Parameter parameter = method.getParameters()[0]; Set dependentBeanNames = new LinkedHashSet<>(); resolver.resolve(parameter, beanFactory, dependentBeanNames); // dependentBeanNames now contains bean names matching the parameter type `
public void setBeanFactory(BeanFactory beanFactory)Initialize this resolver by extracting the ResolvableDependencyTypeFilter
and AutowireCandidateResolver from the given BeanFactory.
`AbstractInjectionPointDependencyResolver resolver = new MyDependencyResolver(); resolver.setBeanFactory(beanFactory); // resolver is now ready to resolve injection point dependencies `
This documentation was auto-generated from the source code of microsphere-spring.
spring-context
- AbstractInjectionPointDependencyResolver
- AbstractSmartLifecycle
- AbstractSpringResourceURLConnection
- AnnotatedBeanCapableImportBeanDefinitionRegistrar
- AnnotatedBeanCapableImportCandidate
- AnnotatedBeanCapableImportSelector
- AnnotatedBeanDefinitionRegistryUtils
- AnnotatedInjectionBeanPostProcessor
- AnnotatedInjectionPointDependencyResolver
- AnnotatedPropertySourceLoader
- AnnotationBeanDefinitionRegistryPostProcessor
- AnnotationUtils
- ApplicationContextUtils
- ApplicationEventInterceptor
- ApplicationEventInterceptorChain
- ApplicationListenerInterceptor
- ApplicationListenerInterceptorChain
- AutoRegistrationBean
- AutoRegistrationBeanRegistrar
- AutowireCandidateResolvingListener
- AutowiredInjectionPointDependencyResolver
- BeanCapableImportCandidate
- BeanDefinitionUtils
- BeanDependencyResolver
- BeanFactoryListener
- BeanFactoryListenerAdapter
- BeanFactoryListeners
- BeanFactoryUtils
- BeanListener
- BeanListenerAdapter
- BeanListeners
- BeanMethodInjectionPointDependencyResolver
- BeanPropertyChangedEvent
- BeanRegistrar
- BeanSource
- BeanTimeStatistics
- BeanUtils
- CollectingConfigurationPropertyListener
- CompositeAutowireCandidateResolvingListener
- ConfigurationBeanAliasGenerator
- ConfigurationBeanBinder
- ConfigurationBeanBindingPostProcessor
- ConfigurationBeanBindingRegistrar
- ConfigurationBeanBindingsRegister
- ConfigurationBeanCustomizer
- ConfigurationPropertyOverrideAnnotationAttributesStrategy
- ConfigurationPropertyRepository
- ConstructionInjectionPointDependencyResolver
- ConversionServiceResolver
- ConversionServiceUtils
- DefaultApplicationEventInterceptorChain
- DefaultApplicationListenerInterceptorChain
- DefaultBeanDependencyResolver
- DefaultConfigurationBeanAliasGenerator
- DefaultConfigurationBeanBinder
- DefaultPropertiesPropertySource
- DefaultPropertiesPropertySourceLoader
- DefaultPropertiesPropertySources
- DefaultPropertiesPropertySourcesLoader
- DefaultResourceComparator
- DelegatingFactoryBean
- Dependency
- DependencyAnalysisBeanFactoryListener
- DependencyTreeWalker
- EnableAutoRegistrationBean
- EnableConfigurationBeanBinding
- EnableConfigurationBeanBindings
- EnableEventExtension
- EnableSpringConverterAdapter
- EnableSpringConverterAdapterRegistrar
- EnableTTLCaching
- EnvironmentListener
- EnvironmentUtils
- EventExtensionAttributes
- EventExtensionRegistrar
- EventPublishingBeanAfterProcessor
- EventPublishingBeanBeforeProcessor
- EventPublishingBeanInitializer
- ExposingClassPathBeanDefinitionScanner
- FilterMode
- GenericAnnotationAttributes
- GenericApplicationListenerAdapter
- GenericBeanNameGenerator
- GenericBeanPostProcessorAdapter
- HyphenAliasGenerator
- ImmutableMapPropertySource
- ImportOptional
- ImportOptionalSelector
- InjectionPointDependencyResolver
- InjectionPointDependencyResolvers
- InterceptingApplicationEventMulticaster
- InterceptingApplicationEventMulticasterProxy
- InterceptingApplicationListener
- JavaBeansPropertyChangeListenerAdapter
- JoinAliasGenerator
- JsonPropertySource
- JsonPropertySourceFactory
- ListenableAutowireCandidateResolver
- ListenableAutowireCandidateResolverInitializer
- ListenableConfigurableEnvironment
- ListenableConfigurableEnvironmentInitializer
- LoggingAutowireCandidateResolvingListener
- LoggingBeanFactoryListener
- LoggingBeanListener
- LoggingEnvironmentListener
- LoggingSmartLifecycle
- MethodParameterUtils
- MimeTypeUtils
- NamedBeanHolderComparator
- OnceApplicationContextEventListener
- OverrideAnnotationAttributes
- OverrideAnnotationAttributesStrategy
- ParallelPreInstantiationSingletonsBeanFactoryListener
- ProfileListener
- PropertiesUtils
- PropertyConstants
- PropertyResolverListener
- PropertyResolverUtils
- PropertySourceChangedEvent
- PropertySourceExtension
- PropertySourceExtensionAttributes
- PropertySourceExtensionLoader
- PropertySourcesChangedEvent
- PropertySourcesUtils
- PropertyValuesUtils
- ResolvableDependencyTypeFilter
- ResolvablePlaceholderAnnotationAttributes
- ResourceInjectionPointDependencyResolver
- ResourceLoaderUtils
- ResourcePropertySource
- ResourcePropertySourceLoader
- ResourcePropertySources
- ResourcePropertySourcesLoader
- ResourceUtils
- ResourceYamlProcessor
- SpringConverterAdapter
- SpringDelegatingBeanProtocolURLConnectionFactory
- SpringEnvironmentURLConnectionFactory
- SpringFactoriesLoaderUtils
- SpringProfilesURLConnectionAdapter
- SpringPropertySourcesURLConnectionAdapter
- SpringProtocolURLStreamHandler
- SpringResourceURLConnection
- SpringResourceURLConnectionAdapter
- SpringResourceURLConnectionFactory
- SpringSubProtocolURLConnectionFactory
- SpringVersion
- SpringVersionUtils
- TTLCachePut
- TTLCacheResolver
- TTLCacheable
- TTLCachingConfiguration
- TTLContext
- UnderScoreJoinAliasGenerator
- YamlPropertySource
- YamlPropertySourceFactory
spring-guice
spring-jdbc
- CompoundJdbcEventListenerFactory
- EnableP6DataSource
- NoOpP6LoadableOptions
- P6DataSourceBeanDefinitionRegistrar
- P6DataSourceBeanPostProcessor
- PropertySourcesP6LoadableOptionsAdapter
- SpringP6SpyURLConnectionFactory
spring-test
- AbstractWebFluxTest
- AbstractWebMvcTest
- AnnotatedTypeMetadataTestFactory
- EmbeddedDataBaseBeanDefinitionRegistrar
- EmbeddedDataBaseBeanDefinitionsRegistrar
- EmbeddedDatabaseType
- EmbeddedTomcatConfiguration
- EmbeddedTomcatContextLoader
- EmbeddedTomcatMergedContextConfiguration
- EmbeddedTomcatTestContextBootstrapper
- EmbeddedZookeeperServer
- EmbeddedZookeeperServerTestExecutionListener
- EnableEmbeddedDatabase
- EnableEmbeddedDatabases
- MockServletWebRequest
- PersonHandler
- PersonHandler
- RouterFunctionTestConfig
- RouterFunctionTestConfig
- ServletTestUtils
- SimpleUrlHandlerMappingTestConfig
- SimpleUrlHandlerMappingTestConfig
- SpringLoggingTest
- SpringTestUtils
- SpringTestWebUtils
- TestConditionContext
- TestController
- TestFilter
- TestFilterRegistration
- TestServlet
- TestServletContext
- TestServletContextListener
- TestServletRegistration
- User
- WebTestUtils
spring-web
- AbstractNameValueExpression
- AbstractWebEndpointMappingFactory
- AbstractWebRequestRule
- CompositeWebEndpointMappingRegistry
- CompositeWebRequestRule
- ConsumeMediaTypeExpression
- DelegatingHandlerMethodAdvice
- EnableWebExtension
- FilterRegistrationWebEndpointMappingFactory
- FilteringWebEndpointMappingRegistry
- GenericMediaTypeExpression
- HandlerMetadata
- HandlerMethodAdvice
- HandlerMethodArgumentInterceptor
- HandlerMethodArgumentsResolvedEvent
- HandlerMethodInterceptor
- HandlerMethodMetadata
- HttpUtils
- Jackson2WebEndpointMappingFactory
- MediaTypeExpression
- MediaTypeUtils
- NameValueExpression
- ProduceMediaTypeExpression
- PropertyConstants
- RegistrationWebEndpointMappingFactory
- RequestAttributesUtils
- RequestContextStrategy
- ServletRegistrationWebEndpointMappingFactory
- ServletWebEndpointMappingResolver
- SimpleWebEndpointMappingRegistry
- SmartWebEndpointMappingFactory
- SpringWebHelper
- SpringWebType
- UnknownSpringWebHelper
- WebEndpointMapping
- WebEndpointMappingFactory
- WebEndpointMappingFilter
- WebEndpointMappingRegistrar
- WebEndpointMappingRegistry
- WebEndpointMappingResolver
- WebEndpointMappingsReadyEvent
- WebEventPublisher
- WebExtensionBeanDefinitionRegistrar
- WebRequestConsumesRule
- WebRequestHeaderExpression
- WebRequestHeadersRule
- WebRequestMethodsRule
- WebRequestParamExpression
- WebRequestParamsRule
- WebRequestPattensRule
- WebRequestProducesRule
- WebRequestRule
- WebRequestUtils
- WebScope
- WebSource
- WebTarget
- WebType
- WebUtils
spring-webflux
- CompositeWebFilter
- ConsumingWebEndpointMappingAdapter
- DelegatingWebFilter
- EnableWebFluxExtension
- HandlerMappingWebEndpointMappingFactory
- HandlerMappingWebEndpointMappingResolver
- HandlerMetadataWebEndpointMappingFactory
- InterceptingHandlerMethodProcessor
- MonoUtils
- RequestContextWebFilter
- RequestHandledEventPublishingWebFilter
- RequestMappingMetadataWebEndpointMappingFactory
- RequestPredicateKind
- RequestPredicateVisitorAdapter
- ReversedProxyHandlerMapping
- RouterFunctionVisitorAdapter
- ServerRequestHandledEvent
- ServerWebRequest
- SpringWebFluxHelper
- StoringRequestBodyArgumentInterceptor
- StoringResponseBodyReturnValueInterceptor
- WebFluxExtensionBeanDefinitionRegistrar
- WebServerScope
- WebServerUtils
spring-webmvc
- AbstractPageRenderContextHandlerInterceptor
- AnnotatedMethodHandlerInterceptor
- ConfigurableContentNegotiationManagerWebMvcConfigurer
- ConsumingWebEndpointMappingAdapter
- ContentCachingFilter
- EnableWebMvcExtension
- EnableWebMvcExtensionListener
- ExclusiveViewResolverApplicationListener
- HandlerMappingWebEndpointMappingFactory
- HandlerMappingWebEndpointMappingResolver
- HandlerMetadataWebEndpointMappingFactory
- HandlerMethodArgumentResolverAdvice
- InterceptingHandlerMethodProcessor
- LazyCompositeHandlerInterceptor
- LoggingHandlerMethodArgumentResolverAdvice
- LoggingMethodHandlerInterceptor
- LoggingPageRenderContextHandlerInterceptor
- MethodHandlerInterceptor
- PropertyConstants
- RequestBodyAdviceAdapter
- RequestMappingMetadata
- RequestMappingMetadataWebEndpointMappingFactory
- RequestPredicateVisitorAdapter
- ResponseBodyAdviceAdapter
- ReversedProxyHandlerMapping
- RouterFunctionVisitorAdapter
- SpringWebMvcHelper
- StoringRequestBodyArgumentAdvice
- StoringResponseBodyReturnValueAdvice
- ViewResolverUtils
- ViewUtils
- WebMvcExtensionBeanDefinitionRegistrar
- WebMvcExtensionConfiguration
- WebMvcUtils
- WebUtils