spring-context

org.springframework.validation.beanvalidation
Class MethodValidationPostProcessor

java.lang.Object
  extended by org.springframework.aop.framework.ProxyConfig
      extended by org.springframework.validation.beanvalidation.MethodValidationPostProcessor
All Implemented Interfaces:
java.io.Serializable, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.beans.factory.InitializingBean, org.springframework.core.Ordered

public class MethodValidationPostProcessor
extends org.springframework.aop.framework.ProxyConfig
implements org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.core.Ordered, org.springframework.beans.factory.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 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:
MethodValidationInterceptor, MethodValidator, Serialized Form

Field Summary
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
MethodValidationPostProcessor()
           
 
Method Summary
 void afterPropertiesSet()
           
 int getOrder()
           
 java.lang.Object postProcessAfterInitialization(java.lang.Object bean, java.lang.String beanName)
           
 java.lang.Object postProcessBeforeInitialization(java.lang.Object bean, java.lang.String beanName)
           
 void setBeanClassLoader(java.lang.ClassLoader classLoader)
           
 void setValidatedAnnotationType(java.lang.Class<? extends java.lang.annotation.Annotation> validatedAnnotationType)
          Set the 'validated' annotation type.
 void setValidator(javax.validation.Validator validator)
          Set the JSR-303 Validator to delegate to for validating methods.
 void setValidatorFactory(javax.validation.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.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(java.lang.Class<? extends java.lang.annotation.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(javax.validation.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(javax.validation.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()

setBeanClassLoader

public void setBeanClassLoader(java.lang.ClassLoader classLoader)
Specified by:
setBeanClassLoader in interface org.springframework.beans.factory.BeanClassLoaderAware

getOrder

public int getOrder()
Specified by:
getOrder in interface org.springframework.core.Ordered

afterPropertiesSet

public void afterPropertiesSet()
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean

postProcessBeforeInitialization

public java.lang.Object postProcessBeforeInitialization(java.lang.Object bean,
                                                        java.lang.String beanName)
                                                 throws org.springframework.beans.BeansException
Specified by:
postProcessBeforeInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
Throws:
org.springframework.beans.BeansException

postProcessAfterInitialization

public java.lang.Object postProcessAfterInitialization(java.lang.Object bean,
                                                       java.lang.String beanName)
                                                throws org.springframework.beans.BeansException
Specified by:
postProcessAfterInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
Throws:
org.springframework.beans.BeansException

spring-context