public class MethodValidationPostProcessor extends AbstractBeanFactoryAwareAdvisingPostProcessor implements InitializingBean
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)
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 4.0, this functionality requires either a Bean Validation 1.1 provider (such as Hibernate Validator 5.x) or the Bean Validation 1.0 API with Hibernate Validator 4.3. The actual provider will be autodetected and automatically adapted.
MethodValidationInterceptor
,
executable.ExecutableValidator
,
MethodValidator
,
Serialized Formadvisor, beforeExistingAdvisors
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor and Description |
---|
MethodValidationPostProcessor() |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet()
Invoked by a BeanFactory after it has set all bean properties supplied
(and satisfied BeanFactoryAware and ApplicationContextAware).
|
protected Advice |
createMethodValidationAdvice(Validator validator)
Create AOP advice for method validation purposes, to be applied
with a pointcut for the specified 'validated' annotation.
|
void |
setValidatedAnnotationType(java.lang.Class<? extends java.lang.annotation.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.
|
prepareProxyFactory, setBeanFactory
customizeProxyFactory, isEligible, isEligible, postProcessAfterInitialization, postProcessBeforeInitialization, setBeforeExistingAdvisors
evaluateProxyInterfaces, getOrder, getProxyClassLoader, isConfigurationCallbackInterface, isInternalLanguageInterface, setBeanClassLoader, setOrder, setProxyClassLoader
copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toString
public void setValidatedAnnotationType(java.lang.Class<? extends java.lang.annotation.Annotation> validatedAnnotationType)
Validated
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.
validatedAnnotationType
- the desired annotation typepublic void setValidator(Validator validator)
Default is the default ValidatorFactory's default Validator.
public void setValidatorFactory(ValidatorFactory validatorFactory)
Default is the default ValidatorFactory's default Validator.
ValidatorFactory.getValidator()
public void afterPropertiesSet()
InitializingBean
This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.
afterPropertiesSet
in interface InitializingBean
protected Advice createMethodValidationAdvice(Validator validator)
validator
- the JSR-303 Validator to delegate toMethodValidationInterceptor
or subclass thereof)