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), e.g.:
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.
As of Spring 5.0, this functionality requires a Bean Validation 1.1+ provider.
- Since:
- 3.1
- Author:
- Juergen Hoeller
- See Also:
-
Field Summary
Fields inherited from class org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor
advisor, beforeExistingAdvisors
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.protected Advice
createMethodValidationAdvice
(Supplier<Validator> validator) Create AOP advice for method validation purposes, to be applied with a pointcut for the specified 'validated' annotation.void
setAdaptConstraintViolations
(boolean adaptViolations) Whether to adaptConstraintViolation
s toMethodValidationResult
.void
setValidatedAnnotationType
(Class<? extends Annotation> validatedAnnotationType) Set the 'validated' annotation type.void
setValidator
(Validator validator) Set the JSR-303 Validator to delegate to for validating methods.void
setValidatorFactory
(ValidatorFactory validatorFactory) Set the JSR-303 ValidatorFactory to delegate to for validating methods, using its default Validator.void
setValidatorProvider
(ObjectProvider<Validator> validatorProvider) Set a lazily initialized Validator to delegate to for validating methods.Methods inherited from class org.springframework.aop.framework.autoproxy.AbstractBeanFactoryAwareAdvisingPostProcessor
isEligible, prepareProxyFactory, setBeanFactory
Methods inherited from class org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor
customizeProxyFactory, determineBeanType, isEligible, postProcessAfterInitialization, setBeforeExistingAdvisors
Methods inherited from class org.springframework.aop.framework.ProxyProcessorSupport
evaluateProxyInterfaces, getOrder, getProxyClassLoader, isConfigurationCallbackInterface, isInternalLanguageInterface, setBeanClassLoader, setOrder, setProxyClassLoader
Methods inherited from class org.springframework.aop.framework.ProxyConfig
copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.beans.factory.config.BeanPostProcessor
postProcessBeforeInitialization
Methods inherited from interface org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor
postProcessAfterInstantiation, postProcessBeforeInstantiation, postProcessProperties
Methods inherited from interface org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor
determineCandidateConstructors, getEarlyBeanReference, predictBeanType
-
Constructor Details
-
MethodValidationPostProcessor
public MethodValidationPostProcessor()
-
-
Method Details
-
setValidatedAnnotationType
Set the 'validated' annotation type. The default validated annotation type is theValidated
annotation.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
-
setValidatorFactory
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:
-
setValidator
Set the JSR-303 Validator to delegate to for validating methods.Default is the default ValidatorFactory's default Validator.
-
setValidatorProvider
Set a lazily initialized Validator to delegate to for validating methods.- Since:
- 6.0
- See Also:
-
setAdaptConstraintViolations
public void setAdaptConstraintViolations(boolean adaptViolations) Whether to adaptConstraintViolation
s toMethodValidationResult
.By default
false
in which caseConstraintViolationException
is raised in case of violations. When set totrue
,MethodValidationException
is raised instead with the method validation results.- Since:
- 6.1
-
afterPropertiesSet
public void afterPropertiesSet()Description copied from interface:InitializingBean
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.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:
afterPropertiesSet
in interfaceInitializingBean
-
createMethodValidationAdvice
Create 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
MethodValidationInterceptor
or subclass thereof) - Since:
- 6.0
-