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 4.0, this functionality requires either a Bean Validation 1.1 provider (such as Hibernate Validator 5.0) or the Bean Validation 1.0 API with Hibernate Validator 4.2 or 4.3. The actual provider will be autodetected and automatically adapted.

  Since:
    3.1
  Author:
    Juergen Hoeller
  See Also:
    `MethodValidationPostProcessor`, `executable.ExecutableValidator`, `MethodValidator`

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

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

          public Object invoke(MethodInvocation invocation)
                        throws Throwable

      Specified by:
        `invoke` in interface `MethodInterceptor`
      Throws:
        `Throwable`

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