org.springframework.validation.beanvalidation
Class LocalValidatorFactoryBean

java.lang.Object
  extended by org.springframework.validation.beanvalidation.SpringValidatorAdapter
      extended by org.springframework.validation.beanvalidation.LocalValidatorFactoryBean
All Implemented Interfaces:
javax.validation.Validator, javax.validation.ValidatorFactory, InitializingBean, ApplicationContextAware

public class LocalValidatorFactoryBean
extends SpringValidatorAdapter
implements javax.validation.ValidatorFactory, ApplicationContextAware, InitializingBean

This is the central class for javax.validation (JSR-303) setup in a Spring application context: It bootstraps a javax.validation.ValidationFactory and exposes it through the Spring Validator interface as well as through the JSR-303 Validator interface and the ValidatorFactory interface itself.

When talking to an instance of this bean through the Spring or JSR-303 Validator interfaces, you'll be talking to the default Validator of the underlying ValidatorFactory. This is very convenient in that you don't have to perform yet another call on the factory, assuming that you will almost always use the default Validator anyway. This can also be injected directly into any target dependency of type Validator!

Since:
3.0
Author:
Juergen Hoeller
See Also:
ValidatorFactory, Validator, Validation.buildDefaultValidatorFactory(), ValidatorFactory.getValidator()

Constructor Summary
LocalValidatorFactoryBean()
           
 
Method Summary
 void afterPropertiesSet()
          Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
 javax.validation.ConstraintValidatorFactory getConstraintValidatorFactory()
           
 javax.validation.MessageInterpolator getMessageInterpolator()
           
 javax.validation.TraversableResolver getTraversableResolver()
           
 Map<String,String> getValidationPropertyMap()
          Allow Map access to the bean validation properties to be passed to the validation provider, with the option to add or override specific entries.
 javax.validation.Validator getValidator()
           
 void setApplicationContext(ApplicationContext applicationContext)
          Set the ApplicationContext that this object runs in.
 void setConstraintValidatorFactory(javax.validation.ConstraintValidatorFactory constraintValidatorFactory)
          Specify a custom ConstraintValidatorFactory to use for this ValidatorFactory.
 void setMappingLocations(Resource[] mappingLocations)
          Specify resource locations to load XML constraint mapping files from, if any.
 void setMessageInterpolator(javax.validation.MessageInterpolator messageInterpolator)
          Specify a custom MessageInterpolator to use for this ValidatorFactory and its exposed default Validator.
 void setProviderClass(Class<? extends javax.validation.spi.ValidationProvider> providerClass)
          Specify the desired provider class, if any.
 void setTraversableResolver(javax.validation.TraversableResolver traversableResolver)
          Specify a custom TraversableResolver to use for this ValidatorFactory and its exposed default Validator.
 void setValidationMessageSource(MessageSource messageSource)
          Specify a custom Spring MessageSource for resolving validation messages, instead of relying on JSR-303's default "ValidationMessages.properties" bundle in the classpath.
 void setValidationProperties(Properties jpaProperties)
          Specify bean validation properties to be passed to the validation provider.
 void setValidationPropertyMap(Map<String,String> validationProperties)
          Specify bean validation properties to be passed to the validation provider as a Map.
 javax.validation.ValidatorContext usingContext()
           
 
Methods inherited from class org.springframework.validation.beanvalidation.SpringValidatorAdapter
getArgumentsForConstraint, getConstraintsForClass, supports, unwrap, validate, validate, validateProperty, validateValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.validation.ValidatorFactory
unwrap
 

Constructor Detail

LocalValidatorFactoryBean

public LocalValidatorFactoryBean()
Method Detail

setProviderClass

public void setProviderClass(Class<? extends javax.validation.spi.ValidationProvider> providerClass)
Specify the desired provider class, if any.

If not specified, JSR-303's default search mechanism will be used.

See Also:
Validation.byProvider(Class), Validation.byDefaultProvider()

setMessageInterpolator

public void setMessageInterpolator(javax.validation.MessageInterpolator messageInterpolator)
Specify a custom MessageInterpolator to use for this ValidatorFactory and its exposed default Validator.


setValidationMessageSource

public void setValidationMessageSource(MessageSource messageSource)
Specify a custom Spring MessageSource for resolving validation messages, instead of relying on JSR-303's default "ValidationMessages.properties" bundle in the classpath. This may refer to a Spring context's shared "messageSource" bean, or to some special MessageSource setup for validation purposes only.

NOTE: This feature requires Hibernate Validator 4.1 or higher on the classpath. You may nevertheless use a different validation provider but Hibernate Validator's ResourceBundleMessageInterpolator class must be accessible during configuration.

Specify either this property or "messageInterpolator", not both. If you would like to build a custom MessageInterpolator, consider deriving from Hibernate Validator's ResourceBundleMessageInterpolator and passing in a Spring MessageSourceResourceBundleLocator when constructing your interpolator.

See Also:
ResourceBundleMessageInterpolator, MessageSourceResourceBundleLocator

setTraversableResolver

public void setTraversableResolver(javax.validation.TraversableResolver traversableResolver)
Specify a custom TraversableResolver to use for this ValidatorFactory and its exposed default Validator.


setConstraintValidatorFactory

public void setConstraintValidatorFactory(javax.validation.ConstraintValidatorFactory constraintValidatorFactory)
Specify a custom ConstraintValidatorFactory to use for this ValidatorFactory.

Default is a SpringConstraintValidatorFactory, delegating to the containing ApplicationContext for creating autowired ConstraintValidator instances.


setMappingLocations

public void setMappingLocations(Resource[] mappingLocations)
Specify resource locations to load XML constraint mapping files from, if any.


setValidationProperties

public void setValidationProperties(Properties jpaProperties)
Specify bean validation properties to be passed to the validation provider.

Can be populated with a String "value" (parsed via PropertiesEditor) or a "props" element in XML bean definitions.

See Also:
Configuration.addProperty(String, String)

setValidationPropertyMap

public void setValidationPropertyMap(Map<String,String> validationProperties)
Specify bean validation properties to be passed to the validation provider as a Map.

Can be populated with a "map" or "props" element in XML bean definitions.

See Also:
Configuration.addProperty(String, String)

getValidationPropertyMap

public Map<String,String> getValidationPropertyMap()
Allow Map access to the bean validation properties to be passed to the validation provider, with the option to add or override specific entries.

Useful for specifying entries directly, for example via "validationPropertyMap[myKey]".


setApplicationContext

public void setApplicationContext(ApplicationContext applicationContext)
Description copied from interface: ApplicationContextAware
Set the ApplicationContext that this object runs in. Normally this call will be used to initialize the object.

Invoked after population of normal bean properties but before an init callback such as InitializingBean.afterPropertiesSet() or a custom init-method. Invoked after ResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader), ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher) and MessageSourceAware, if applicable.

Specified by:
setApplicationContext in interface ApplicationContextAware
Parameters:
applicationContext - the ApplicationContext object to be used by this object
See Also:
BeanInitializationException

afterPropertiesSet

public void afterPropertiesSet()
Description copied from interface: InitializingBean
Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

Specified by:
afterPropertiesSet in interface InitializingBean

getValidator

public javax.validation.Validator getValidator()
Specified by:
getValidator in interface javax.validation.ValidatorFactory

usingContext

public javax.validation.ValidatorContext usingContext()
Specified by:
usingContext in interface javax.validation.ValidatorFactory

getMessageInterpolator

public javax.validation.MessageInterpolator getMessageInterpolator()
Specified by:
getMessageInterpolator in interface javax.validation.ValidatorFactory

getTraversableResolver

public javax.validation.TraversableResolver getTraversableResolver()
Specified by:
getTraversableResolver in interface javax.validation.ValidatorFactory

getConstraintValidatorFactory

public javax.validation.ConstraintValidatorFactory getConstraintValidatorFactory()
Specified by:
getConstraintValidatorFactory in interface javax.validation.ValidatorFactory