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, AopInfrastructureBean, Aware, BeanClassLoaderAware, BeanFactoryAware, BeanPostProcessor, InitializingBean, Ordered

      public class MethodValidationPostProcessor
      extends AbstractBeanFactoryAwareAdvisingPostProcessor
      implements 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), 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 5.0, 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 and Description
    `MethodValidationPostProcessor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Invoked by the containing `BeanFactory` after it has set all bean properties and satisfied `BeanFactoryAware`, `ApplicationContextAware` etc.
    `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(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.

    - ### Methods inherited from class org.springframework.aop.framework.autoproxy.AbstractBeanFactoryAwareAdvisingPostProcessor

      `isEligible, prepareProxyFactory, setBeanFactory`

    - ### Methods inherited from class org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor

      `customizeProxyFactory, isEligible, postProcessAfterInitialization, postProcessBeforeInitialization, 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`

- - ### Constructor Detail

    - #### MethodValidationPostProcessor

          public MethodValidationPostProcessor()

  - ### Method Detail

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

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

    - #### 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()`

    - #### afterPropertiesSet

          public void afterPropertiesSet()

      Description copied from interface: `InitializingBean`
      Invoked by the containing `BeanFactory` after it has set all bean properties and satisfied `BeanFactoryAware`, `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 interface `InitializingBean`

    - #### createMethodValidationAdvice

          protected Advice createMethodValidationAdvice(@Nullable
                                                        Validator validator)

      Create AOP advice for method validation purposes, to be applied with a pointcut for the specified 'validated' annotation.
      Parameters:
        `validator` - the JSR-303 Validator to delegate to
      Returns:
        the interceptor to use (typically, but not necessarily, a `MethodValidationInterceptor` or subclass thereof)
      Since:
        4.2