Package org.springframework.validation.beanvalidation

# Class MethodValidationPostProcessor

java.lang.Object
org.springframework.aop.framework.ProxyConfig
org.springframework.aop.framework.ProxyProcessorSupport
org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor
org.springframework.aop.framework.autoproxy.AbstractBeanFactoryAwareAdvisingPostProcessor
org.springframework.validation.beanvalidation.MethodValidationPostProcessor

All Implemented Interfaces:
  `Serializable`, `org.springframework.aop.framework.AopInfrastructureBean`, `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanClassLoaderAware`, `org.springframework.beans.factory.BeanFactoryAware`, `org.springframework.beans.factory.config.BeanPostProcessor`, `org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor`, `org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor`, `org.springframework.beans.factory.InitializingBean`, `org.springframework.core.Ordered`

public class MethodValidationPostProcessor extends org.springframework.aop.framework.autoproxy.AbstractBeanFactoryAwareAdvisingPostProcessor implements org.springframework.beans.factory.InitializingBean
A convenient `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.

This functionality requires a Bean Validation 1.1+ provider.

Since:
  3.1
Author:
  Juergen Hoeller
See Also:
  - `MethodValidationInterceptor`
  - `ExecutableValidator`
  - Serialized Form

## 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

Constructors
Constructor
Description
`MethodValidationPostProcessor()`

## Method Summary

Modifier and Type
Method
Description
`void`
`afterPropertiesSet()`
`protected org.aopalliance.aop.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 adapt `ConstraintViolation`s to `MethodValidationResult`.
`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(org.springframework.beans.factory.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

public void setValidatedAnnotationType(Class<? extends Annotation> validatedAnnotationType)
Set the 'validated' annotation type. The default validated annotation type is the `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.

Parameters:
  `validatedAnnotationType` - the desired annotation type

### setValidatorFactory

public void setValidatorFactory(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:
  - `ValidatorFactory.getValidator()`

### setValidator

public void setValidator(Validator validator)
Set the JSR-303 Validator to delegate to for validating methods.

Default is the default ValidatorFactory's default Validator.

### setValidatorProvider

public void setValidatorProvider(org.springframework.beans.factory.ObjectProvider<Validator> validatorProvider)
Set a lazily initialized Validator to delegate to for validating methods.

Since:
  6.0
See Also:
  - `setValidator(jakarta.validation.Validator)`

### setAdaptConstraintViolations

public void setAdaptConstraintViolations(boolean adaptViolations)
Whether to adapt `ConstraintViolation`s to `MethodValidationResult`.

By default `false` in which case `ConstraintViolationException` is raised in case of violations. When set to `true`, `MethodValidationException` is raised instead with the method validation results.

Since:
  6.1

### afterPropertiesSet

public void afterPropertiesSet()

Specified by:
  `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`

### createMethodValidationAdvice

protected org.aopalliance.aop.Advice createMethodValidationAdvice(Supplier<Validator> validator)
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