Top Description Methods
org.springframework.beans.factory.config

public Interface SmartInstantiationAwareBeanPostProcessor

extends InstantiationAwareBeanPostProcessor
Known Direct Implementers
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
Imports
java.lang.reflect.Constructor, org.springframework.beans.BeansException, org.springframework.lang.Nullable

Extension of the 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.

Author
Juergen Hoeller
Since
2.0.3

Method Summary

Modifier and TypeMethod and Description
public default Class<?>

Returns:

the type of the bean (never null)
determineBeanType
(Class<?>
the raw class of the bean
beanClass
,
String
the name of the bean
beanName
)

Determine the type of the bean to be eventually returned from this processor's postProcessBeforeInstantiation callback.

public default Constructor<?>[]

Returns:

the candidate constructors, or null if none specified
determineCandidateConstructors
(Class<?>
the raw class of the bean (never null)
beanClass
,
String
the name of the bean
beanName
)

Determine the candidate constructors to use for the given bean.

public default Object

Returns:

the object to expose as bean reference (typically with the passed-in bean instance as default)
getEarlyBeanReference
(Object
the raw bean instance
bean
,
String
the name of the bean
beanName
)

Obtain a reference for early access to the specified bean, typically for the purpose of resolving a circular reference.

public default Class<?>

Returns:

the type of the bean, or null if not predictable
predictBeanType
(Class<?>
the raw class of the bean
beanClass
,
String
the name of the bean
beanName
)

Predict the type of the bean to be eventually returned from this processor's postProcessBeforeInstantiation callback.

Inherited from org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor:
postProcessAfterInstantiationpostProcessBeforeInstantiationpostProcessProperties

Method Detail

determineBeanTypeback to summary
public default Class<?> determineBeanType(Class<?> beanClass, String beanName) throws BeansException

Determine the type of the bean to be eventually returned from this processor's postProcessBeforeInstantiation callback.

The default implementation returns the given bean class as-is. Specific implementations should fully evaluate their processing steps in order to create/initialize a potential proxy class upfront.

Parameters
beanClass:Class<?>

the raw class of the bean

beanName:String

the name of the bean

Returns:Class<?>

the type of the bean (never null)

Exceptions
BeansException:
in case of errors
Since
6.0
determineCandidateConstructorsback to summary
public 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:Class<?>

the raw class of the bean (never null)

beanName:String

the name of the bean

Returns:Constructor<?>[]

the candidate constructors, or null if none specified

Annotations
@Nullable
Exceptions
BeansException:
in case of errors
getEarlyBeanReferenceback to summary
public 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 postProcessBeforeInitialization / postProcessAfterInitialization 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:Object

the raw bean instance

beanName:String

the name of the bean

Returns:Object

the object to expose as bean reference (typically with the passed-in bean instance as default)

Exceptions
BeansException:
in case of errors
predictBeanTypeback to summary
public default Class<?> predictBeanType(Class<?> beanClass, String beanName) throws BeansException

Predict the type of the bean to be eventually returned from this processor's postProcessBeforeInstantiation callback.

The default implementation returns null. Specific implementations should try to predict the bean type as far as known/cached already, without extra processing steps.

Parameters
beanClass:Class<?>

the raw class of the bean

beanName:String

the name of the bean

Returns:Class<?>

the type of the bean, or null if not predictable

Annotations
@Nullable
Exceptions
BeansException:
in case of errors