Class MethodValidationPostProcessor
- All Implemented Interfaces:
- Serializable, AopInfrastructureBean, Aware, BeanClassLoaderAware, BeanFactoryAware, BeanPostProcessor, InstantiationAwareBeanPostProcessor, SmartInstantiationAwareBeanPostProcessor, InitializingBean, Ordered
BeanPostProcessor implementation that delegates to a
JSR-303 provider for performing method-level validation on annotated methods.
Applicable methods have JSR-303 constraint annotations on their parameters and/or on their return value (in the latter case specified at the method level, typically as inline annotation), for example:
public @NotNull Object myValidMethod(@NotNull String arg1, @Max(10) int arg2)
In case of validation errors, the interceptor can raise
ConstraintViolationException, or adapt the violations to
MethodValidationResult and raise MethodValidationException.
Target classes with such annotated methods need to be annotated with Spring's
Validated annotation at the type level, for their methods to be searched for
inline constraint annotations. Validation groups can be specified through @Validated
as well. By default, JSR-303 will validate against its default group only.
- Since:
- 3.1
- Author:
- Juergen Hoeller
- See Also:
- 
Field SummaryFields inherited from class AbstractBeanFactoryAwareAdvisingPostProcessorbeanFactoryFields inherited from class AbstractAdvisingBeanPostProcessoradvisor, beforeExistingAdvisorsFields inherited from interface OrderedHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidInvoked by the containingBeanFactoryafter it has set all bean properties and satisfiedBeanFactoryAware,ApplicationContextAwareetc.protected AdvicecreateMethodValidationAdvice(Supplier<jakarta.validation.Validator> validator) Create AOP advice for method validation purposes, to be applied with a pointcut for the specified 'validated' annotation.voidsetAdaptConstraintViolations(boolean adaptViolations) Whether to adaptConstraintViolations toMethodValidationResult.voidsetValidatedAnnotationType(Class<? extends Annotation> validatedAnnotationType) Set the 'validated' annotation type.voidsetValidator(jakarta.validation.Validator validator) Set the JSR-303 Validator to delegate to for validating methods.voidsetValidatorFactory(jakarta.validation.ValidatorFactory validatorFactory) Set the JSR-303 ValidatorFactory to delegate to for validating methods, using its default Validator.voidsetValidatorProvider(ObjectProvider<jakarta.validation.Validator> validatorProvider) Set a lazily initialized Validator to delegate to for validating methods.Methods inherited from class AbstractBeanFactoryAwareAdvisingPostProcessorisEligible, prepareProxyFactory, setBeanFactoryMethods inherited from class AbstractAdvisingBeanPostProcessorcustomizeProxyFactory, determineBeanType, isEligible, postProcessAfterInitialization, setBeforeExistingAdvisorsMethods inherited from class ProxyProcessorSupportevaluateProxyInterfaces, getOrder, getProxyClassLoader, isConfigurationCallbackInterface, isInternalLanguageInterface, setBeanClassLoader, setOrder, setProxyClassLoaderMethods inherited from class ProxyConfigcopyDefault, copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toStringMethods inherited from class Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface BeanPostProcessorpostProcessBeforeInitializationMethods inherited from interface InstantiationAwareBeanPostProcessorpostProcessAfterInstantiation, postProcessBeforeInstantiation, postProcessPropertiesMethods inherited from interface SmartInstantiationAwareBeanPostProcessordetermineCandidateConstructors, getEarlyBeanReference, predictBeanType
- 
Constructor Details- 
MethodValidationPostProcessorpublic MethodValidationPostProcessor()
 
- 
- 
Method Details- 
setValidatedAnnotationTypeSet the 'validated' annotation type. The default validated annotation type is theValidatedannotation.This setter property exists so that developers can provide their own (non-Spring-specific) annotation type to indicate that a class is supposed to be validated in the sense of applying method validation. - Parameters:
- validatedAnnotationType- the desired annotation type
 
- 
setValidatorFactorypublic void setValidatorFactory(jakarta.validation.ValidatorFactory validatorFactory) Set the JSR-303 ValidatorFactory to delegate to for validating methods, using its default Validator.Default is the default ValidatorFactory's default Validator. - See Also:
 
- 
setValidatorpublic void setValidator(jakarta.validation.Validator validator) Set the JSR-303 Validator to delegate to for validating methods.Default is the default ValidatorFactory's default Validator. 
- 
setValidatorProviderSet a lazily initialized Validator to delegate to for validating methods.- Since:
- 6.0
- See Also:
 
- 
setAdaptConstraintViolationspublic void setAdaptConstraintViolations(boolean adaptViolations) Whether to adaptConstraintViolations toMethodValidationResult.By default falsein which caseConstraintViolationExceptionis raised in case of violations. When set totrue,MethodValidationExceptionis raised instead with the method validation results.- Since:
- 6.1
 
- 
afterPropertiesSetpublic void afterPropertiesSet()Description copied from interface:InitializingBeanInvoked by the containingBeanFactoryafter it has set all bean properties and satisfiedBeanFactoryAware,ApplicationContextAwareetc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set. - Specified by:
- afterPropertiesSetin interface- InitializingBean
 
- 
createMethodValidationAdviceCreate AOP advice for method validation purposes, to be applied with a pointcut for the specified 'validated' annotation.- Parameters:
- validator- a Supplier for the Validator to use
- Returns:
- the interceptor to use (typically, but not necessarily,
a MethodValidationInterceptoror subclass thereof)
- Since:
- 6.0
 
 
-