|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorAdapter
org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor
public class RequiredAnnotationBeanPostProcessor
A BeanFactoryPostProcessor
implementation that ensures that JavaBean
properties on beans that are marked with an (arbitrary) Annotation
are actually (configured to be) dependency-injected with a value.
The motivation for the existence of this BeanPostProcessor is to allow developers to annotate the setter properties of their own classes with an arbitrary JDK 1.5 annotation to indicate that the container must check for the configuration of a dependency injected value. This neatly pushes responsibility for such checking onto the container (where it arguably belongs), and obviates the need (in part) for a developer to code a method that simply checks that all required properties have actually been set.
Please note that an 'init' method may still need to implemented (and may
still be desirable), because all that this class does is enforce that a
'required' property has actually been configured with a value. It does
not check anything else... in particular, it does not check that a
configured value is not null
.
Required
Constructor Summary | |
---|---|
RequiredAnnotationBeanPostProcessor()
|
Method Summary | |
---|---|
protected Class<? extends Annotation> |
getRequiredAnnotationType()
Return the 'required' annotation type. |
protected boolean |
isRequiredProperty(PropertyDescriptor propertyDescriptor)
Is the supplied property required to have a value (that is, to be dependency-injected)? |
PropertyValues |
postProcessPropertyValues(PropertyValues pvs,
PropertyDescriptor[] pds,
Object bean,
String beanName)
Post-process the given property values before the factory applies them to the given bean. |
void |
setRequiredAnnotationType(Class<? extends Annotation> requiredAnnotationType)
Set the 'required' annotation type. |
Methods inherited from class org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorAdapter |
---|
postProcessAfterInitialization, postProcessAfterInstantiation, postProcessBeforeInitialization, postProcessBeforeInstantiation |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public RequiredAnnotationBeanPostProcessor()
Method Detail |
---|
public void setRequiredAnnotationType(Class<? extends Annotation> requiredAnnotationType)
Required
annotation.
This setter property exists so that developers can provide their own (non-Spring-specific) annotation type to indicate that a property value is required.
requiredAnnotationType
- the desired annotation typeprotected Class<? extends Annotation> getRequiredAnnotationType()
public PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeansException
InstantiationAwareBeanPostProcessor
Also allows for replacing the property values to apply, typically through creating a new MutablePropertyValues instance based on the original PropertyValues, adding or removing specific values.
postProcessPropertyValues
in interface InstantiationAwareBeanPostProcessor
postProcessPropertyValues
in class InstantiationAwareBeanPostProcessorAdapter
pvs
- the property values that the factory is about to apply (never null
)pds
- the relevant property descriptors for the target bean (with ignored
dependency types - which the factory handles specifically - already filtered out)bean
- the bean instance created, but whose properties have not yet been setbeanName
- the name of the bean
null
to skip property population
BeansException
- in case of errorsMutablePropertyValues
protected boolean isRequiredProperty(PropertyDescriptor propertyDescriptor)
This implementation looks for the existence of a
"required" annotation
on the supplied property
.
propertyDescriptor
- the target PropertyDescriptor (never null
)
true
if the supplied property has been marked as being required;
false
if not, or if the supplied property does not have a setter method
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |