org.springframework.validation.beanvalidation

## Class MethodValidationInterceptor

- java.lang.Object
- - org.springframework.validation.beanvalidation.MethodValidationInterceptor

- All Implemented Interfaces:
    Advice, Interceptor, MethodInterceptor

      public class MethodValidationInterceptor
      extends Object
      implements MethodInterceptor

  An AOP Alliance `MethodInterceptor` 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)`

  Validation groups can be specified through Spring's `Validated` annotation at the type level of the containing target class, applying to all public service methods of that class. 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:
    `MethodValidationPostProcessor`, `ExecutableValidator`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `MethodValidationInterceptor()` Create a new MethodValidationInterceptor using a default JSR-303 validator underneath.
    `MethodValidationInterceptor(Validator validator)` Create a new MethodValidationInterceptor using the given JSR-303 Validator.
    `MethodValidationInterceptor(ValidatorFactory validatorFactory)` Create a new MethodValidationInterceptor using the given JSR-303 ValidatorFactory.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Class<?>[]` | `determineValidationGroups(MethodInvocation invocation)` Determine the validation groups to validate against for the given method invocation.
    `Object` | `invoke(MethodInvocation invocation)` Implement this method to perform extra treatments before and after the invocation.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### MethodValidationInterceptor

          public MethodValidationInterceptor()

      Create a new MethodValidationInterceptor using a default JSR-303 validator underneath.

    - #### MethodValidationInterceptor

          public MethodValidationInterceptor(ValidatorFactory validatorFactory)

      Create a new MethodValidationInterceptor using the given JSR-303 ValidatorFactory.
      Parameters:
        `validatorFactory` - the JSR-303 ValidatorFactory to use

    - #### MethodValidationInterceptor

          public MethodValidationInterceptor(Validator validator)

      Create a new MethodValidationInterceptor using the given JSR-303 Validator.
      Parameters:
        `validator` - the JSR-303 Validator to use

  - ### Method Detail

    - #### invoke

          @Nullable
          public Object invoke(MethodInvocation invocation)
                                  throws Throwable

      Description copied from interface: `MethodInterceptor`
      Implement this method to perform extra treatments before and after the invocation. Polite implementations would certainly like to invoke `Joinpoint.proceed()`.
      Specified by:
        `invoke` in interface `MethodInterceptor`
      Parameters:
        `invocation` - the method invocation joinpoint
      Returns:
        the result of the call to `Joinpoint.proceed()`; might be intercepted by the interceptor
      Throws:
        `Throwable` - if the interceptors or the target object throws an exception

    - #### determineValidationGroups

          protected Class<?>[] determineValidationGroups(MethodInvocation invocation)

      Determine the validation groups to validate against for the given method invocation.

      Default are the validation groups as specified in the `Validated` annotation on the containing target class of the method.

      Parameters:
        `invocation` - the current MethodInvocation
      Returns:
        the applicable validation groups as a Class array