public interface SmartInstantiationAwareBeanPostProcessor extends InstantiationAwareBeanPostProcessor
InstantiationAwareBeanPostProcessor
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 the InstantiationAwareBeanPostProcessorAdapter
class. New methods might be added to this interface even in point releases.
InstantiationAwareBeanPostProcessorAdapter
Modifier and Type | Method and Description |
---|---|
default java.lang.reflect.Constructor<?>[] |
determineCandidateConstructors(java.lang.Class<?> beanClass,
java.lang.String beanName)
Determine the candidate constructors to use for the given bean.
|
default java.lang.Object |
getEarlyBeanReference(java.lang.Object bean,
java.lang.String beanName)
Obtain a reference for early access to the specified bean,
typically for the purpose of resolving a circular reference.
|
default java.lang.Class<?> |
predictBeanType(java.lang.Class<?> beanClass,
java.lang.String beanName)
Predict the type of the bean to be eventually returned from this
processor's
InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String) callback. |
postProcessAfterInstantiation, postProcessBeforeInstantiation, postProcessPropertyValues
postProcessAfterInitialization, postProcessBeforeInitialization
default java.lang.Class<?> predictBeanType(java.lang.Class<?> beanClass, java.lang.String beanName) throws BeansException
InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String)
callback.
The default implementation returns null
.
beanClass
- the raw class of the beanbeanName
- the name of the beannull
if not predictableBeansException
- in case of errorsdefault java.lang.reflect.Constructor<?>[] determineCandidateConstructors(java.lang.Class<?> beanClass, java.lang.String beanName) throws BeansException
The default implementation returns null
.
beanClass
- the raw class of the bean (never null
)beanName
- the name of the beannull
if none specifiedBeansException
- in case of errorsdefault java.lang.Object getEarlyBeanReference(java.lang.Object bean, java.lang.String beanName) throws BeansException
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.
bean
- the raw bean instancebeanName
- the name of the beanBeansException
- in case of errors