Class LocalValidatorFactoryBean
- All Implemented Interfaces:
Validator
,ValidatorFactory
,AutoCloseable
,Aware
,DisposableBean
,InitializingBean
,ApplicationContextAware
,SmartValidator
,Validator
- Direct Known Subclasses:
OptionalValidatorFactoryBean
jakarta.validation
(JSR-303) setup in a Spring
application context: It bootstraps a jakarta.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
!
This class is also being used by Spring's MVC configuration namespace, in case of the
jakarta.validation
API being present but no explicit Validator having been configured.
- Since:
- 3.0
- Author:
- Juergen Hoeller, Sebastien Deleuze
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.void
close()
void
destroy()
Invoked by the containingBeanFactory
on destruction of a bean.Allow Map access to the bean validation properties to be passed to the validation provider, with the option to add or override specific entries.protected void
postProcessConfiguration
(Configuration<?> configuration) Post-process the given Bean Validation configuration, adding to or overriding any of its settings.void
setApplicationContext
(ApplicationContext applicationContext) Set the ApplicationContext that this object runs in.void
setConfigurationInitializer
(Consumer<Configuration<?>> configurationInitializer) Specify a callback for customizing the Bean ValidationConfiguration
instance, as an alternative to overriding thepostProcessConfiguration(Configuration)
method in customLocalValidatorFactoryBean
subclasses.void
setConstraintValidatorFactory
(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
(MessageInterpolator messageInterpolator) Specify a custom MessageInterpolator to use for this ValidatorFactory and its exposed default Validator.void
setParameterNameDiscoverer
(ParameterNameDiscoverer parameterNameDiscoverer) Set the ParameterNameDiscoverer to use for resolving method and constructor parameter names if needed for message interpolation.void
setProviderClass
(Class providerClass) Specify the desired provider class, if any.void
setTraversableResolver
(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.void
setValidationProviderResolver
(ValidationProviderResolver validationProviderResolver) Specify a JSR-303ValidationProviderResolver
for bootstrapping the provider of choice, as an alternative toMETA-INF
driven resolution.<T> T
Return a contained validator instance of the specified type, unwrapping as far as necessary.Methods inherited from class org.springframework.validation.beanvalidation.SpringValidatorAdapter
determineErrorCode, determineField, forExecutables, getArgumentsForConstraint, getConstraintsForClass, getRejectedValue, getResolvableField, processConstraintViolations, requiresMessageFormat, supports, validate, validate, validate, validateProperty, validateValue, validateValue
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.validation.Validator
validateObject
-
Constructor Details
-
LocalValidatorFactoryBean
public LocalValidatorFactoryBean()
-
-
Method Details
-
setProviderClass
Specify the desired provider class, if any.If not specified, JSR-303's default search mechanism will be used.
-
setValidationProviderResolver
Specify a JSR-303ValidationProviderResolver
for bootstrapping the provider of choice, as an alternative toMETA-INF
driven resolution.- Since:
- 4.3
-
setMessageInterpolator
Specify a custom MessageInterpolator to use for this ValidatorFactory and its exposed default Validator. -
setValidationMessageSource
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.3 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'sResourceBundleMessageInterpolator
and passing in a Spring-basedResourceBundleLocator
when constructing your interpolator.In order for Hibernate's default validation messages to be resolved still, your
MessageSource
must be configured for optional resolution (usually the default). In particular, theMessageSource
instance specified here should not apply"useCodeAsDefaultMessage"
behavior. Please double-check your setup accordingly.- See Also:
-
ResourceBundleMessageInterpolator
-
setTraversableResolver
Specify a custom TraversableResolver to use for this ValidatorFactory and its exposed default Validator. -
setConstraintValidatorFactory
Specify a custom ConstraintValidatorFactory to use for this ValidatorFactory.Default is a
SpringConstraintValidatorFactory
, delegating to the containing ApplicationContext for creating autowired ConstraintValidator instances. -
setParameterNameDiscoverer
Set the ParameterNameDiscoverer to use for resolving method and constructor parameter names if needed for message interpolation.Default is Hibernate Validator's own internal use of standard Java reflection. This may be overridden with a custom subclass or a Spring-controlled
DefaultParameterNameDiscoverer
if necessary. -
setMappingLocations
Specify resource locations to load XML constraint mapping files from, if any. -
setValidationProperties
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.
-
setValidationPropertyMap
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.
-
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]".
-
setConfigurationInitializer
Specify a callback for customizing the Bean ValidationConfiguration
instance, as an alternative to overriding thepostProcessConfiguration(Configuration)
method in customLocalValidatorFactoryBean
subclasses.This enables convenient customizations for application purposes. Infrastructure extensions may keep overriding the
postProcessConfiguration(jakarta.validation.Configuration<?>)
template method.- Since:
- 5.3.19
-
setApplicationContext
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 afterResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader)
,ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher)
andMessageSourceAware
, if applicable.- Specified by:
setApplicationContext
in interfaceApplicationContextAware
- Parameters:
applicationContext
- the ApplicationContext object to be used by this object- See Also:
-
afterPropertiesSet
public void afterPropertiesSet()Description copied from interface:InitializingBean
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
- Specified by:
afterPropertiesSet
in interfaceInitializingBean
-
postProcessConfiguration
Post-process the given Bean Validation configuration, adding to or overriding any of its settings.Invoked right before building the
ValidatorFactory
.- Parameters:
configuration
- the Configuration object, pre-populated with settings driven by LocalValidatorFactoryBean's properties
-
getValidator
- Specified by:
getValidator
in interfaceValidatorFactory
-
usingContext
- Specified by:
usingContext
in interfaceValidatorFactory
-
getMessageInterpolator
- Specified by:
getMessageInterpolator
in interfaceValidatorFactory
-
getTraversableResolver
- Specified by:
getTraversableResolver
in interfaceValidatorFactory
-
getConstraintValidatorFactory
- Specified by:
getConstraintValidatorFactory
in interfaceValidatorFactory
-
getParameterNameProvider
- Specified by:
getParameterNameProvider
in interfaceValidatorFactory
-
getClockProvider
- Specified by:
getClockProvider
in interfaceValidatorFactory
-
unwrap
Description copied from interface:SmartValidator
Return a contained validator instance of the specified type, unwrapping as far as necessary.- Specified by:
unwrap
in interfaceSmartValidator
- Specified by:
unwrap
in interfaceValidator
- Specified by:
unwrap
in interfaceValidatorFactory
- Overrides:
unwrap
in classSpringValidatorAdapter
- Type Parameters:
T
- the type of the object to return- Parameters:
type
- the class of the object to return- Returns:
- a validator instance of the specified type;
null
if there isn't a nested validator; an exception may be raised if the specified validator type does not match.
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceValidatorFactory
-
destroy
public void destroy()Description copied from interface:DisposableBean
Invoked by the containingBeanFactory
on destruction of a bean.- Specified by:
destroy
in interfaceDisposableBean
-