Interface SmartInstantiationAwareBeanPostProcessor
- All Superinterfaces:
BeanPostProcessor
,InstantiationAwareBeanPostProcessor
- All Known Implementing Classes:
AbstractAdvisorAutoProxyCreator
,AbstractAutoProxyCreator
,AnnotationAwareAspectJAutoProxyCreator
,AspectJAwareAdvisorAutoProxyCreator
,AutowiredAnnotationBeanPostProcessor
,BeanNameAutoProxyCreator
,DefaultAdvisorAutoProxyCreator
,InfrastructureAdvisorAutoProxyCreator
,InstantiationAwareBeanPostProcessorAdapter
,RequiredAnnotationBeanPostProcessor
,ScriptFactoryPostProcessor
public interface SmartInstantiationAwareBeanPostProcessor extends InstantiationAwareBeanPostProcessor
Extension of theInstantiationAwareBeanPostProcessor
interface, adding a callback for predicting the eventual type of a processed bean.NOTE: This interface is a special purpose interface, mainly for internal use within the framework. In general, application-provided post-processors should simply implement the plain
BeanPostProcessor
interface or derive from theInstantiationAwareBeanPostProcessorAdapter
class. New methods might be added to this interface even in point releases.- Since:
- 2.0.3
- Author:
- Juergen Hoeller
- See Also:
InstantiationAwareBeanPostProcessorAdapter
Method Summary
All Methods Instance Methods Default Methods Modifier and Type Method Description default Constructor<?>[]
determineCandidateConstructors(Class<?> beanClass, String beanName)
Determine the candidate constructors to use for the given bean.default Object
getEarlyBeanReference(Object bean, String beanName)
Obtain a reference for early access to the specified bean, typically for the purpose of resolving a circular reference.default Class<?>
predictBeanType(Class<?> beanClass, String beanName)
Predict the type of the bean to be eventually returned from this processor'sInstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String)
callback.Methods inherited from interface org.springframework.beans.factory.config.BeanPostProcessor
postProcessAfterInitialization, postProcessBeforeInitialization
Methods inherited from interface org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor
postProcessAfterInstantiation, postProcessBeforeInstantiation, postProcessProperties, postProcessPropertyValues
Method Detail
predictBeanType
@Nullable default Class<?> predictBeanType(Class<?> beanClass, String beanName) throws BeansException
Predict the type of the bean to be eventually returned from this processor'sInstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String)
callback.The default implementation returns
null
.- Parameters:
beanClass
- the raw class of the beanbeanName
- the name of the bean- Returns:
- the type of the bean, or
null
if not predictable - Throws:
BeansException
- in case of errors
determineCandidateConstructors
@Nullable default Constructor<?>[] determineCandidateConstructors(Class<?> beanClass, String beanName) throws BeansException
Determine the candidate constructors to use for the given bean.The default implementation returns
null
.- Parameters:
beanClass
- the raw class of the bean (nevernull
)beanName
- the name of the bean- Returns:
- the candidate constructors, or
null
if none specified - Throws:
BeansException
- in case of errors
getEarlyBeanReference
default Object getEarlyBeanReference(Object bean, String beanName) throws BeansException
Obtain a reference for early access to the specified bean, typically for the purpose of resolving a circular reference.This callback gives post-processors a chance to expose a wrapper early - that is, before the target bean instance is fully initialized. The exposed object should be equivalent to the what
BeanPostProcessor.postProcessBeforeInitialization(java.lang.Object, java.lang.String)
/BeanPostProcessor.postProcessAfterInitialization(java.lang.Object, java.lang.String)
would expose otherwise. Note that the object returned by this method will be used as bean reference unless the post-processor returns a different wrapper from said post-process callbacks. In other words: Those post-process callbacks may either eventually expose the same reference or alternatively return the raw bean instance from those subsequent callbacks (if the wrapper for the affected bean has been built for a call to this method already, it will be exposes as final bean reference by default).The default implementation returns the given
bean
as-is.- Parameters:
bean
- the raw bean instancebeanName
- the name of the bean- Returns:
- the object to expose as bean reference (typically with the passed-in bean instance as default)
- Throws:
BeansException
- in case of errors