public class MethodValidationInterceptor
extends java.lang.Object
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.
MethodValidationPostProcessor
,
javax.validation.executable.ExecutableValidator
,
org.hibernate.validator.method.MethodValidator
Modifier and Type | Class and Description |
---|---|
private static class |
MethodValidationInterceptor.HibernateValidatorDelegate
Inner class to avoid a hard-coded Hibernate Validator 4.2/4.3 dependency.
|
Modifier and Type | Field and Description |
---|---|
private static java.lang.reflect.Method |
forExecutablesMethod |
private static java.lang.reflect.Method |
validateParametersMethod |
private static java.lang.reflect.Method |
validateReturnValueMethod |
private Validator |
validator |
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.
|
Modifier and Type | Method and Description |
---|---|
protected java.lang.Class<?>[] |
determineValidationGroups(MethodInvocation invocation)
Determine the validation groups to validate against for the given method invocation.
|
java.lang.Object |
invoke(MethodInvocation invocation) |
private static java.lang.reflect.Method forExecutablesMethod
private static java.lang.reflect.Method validateParametersMethod
private static java.lang.reflect.Method validateReturnValueMethod
private final Validator validator
public MethodValidationInterceptor()
public MethodValidationInterceptor(ValidatorFactory validatorFactory)
validatorFactory
- the JSR-303 ValidatorFactory to usepublic MethodValidationInterceptor(Validator validator)
validator
- the JSR-303 Validator to usepublic java.lang.Object invoke(MethodInvocation invocation) throws java.lang.Throwable
java.lang.Throwable
protected java.lang.Class<?>[] determineValidationGroups(MethodInvocation invocation)
Default are the validation groups as specified in the Validated
annotation
on the containing target class of the method.
invocation
- the current MethodInvocation