org.springframework.validation.beanvalidation
Class MethodValidationInterceptor

java.lang.Object
  extended by 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 3.1, this functionality requires Hibernate Validator 4.2 or higher. In Spring 3.2, this class will autodetect a Bean Validation 1.1 compliant provider and automatically use the standard method validation support there (once available).

Since:
3.1
Author:
Juergen Hoeller
See Also:
MethodValidationPostProcessor, MethodValidator

Constructor Summary
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
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:
validatorFactory - 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