Anular el validador predeterminado de Hibernate en spring web mvc
Spring está utilizando la fábrica de validadores por defecto proporcionada por hibernate factory. Sin embargo, no quiero incluir una dependencia de Lenguaje de Expresiones. Esta respuesta recomienda evitar el uso de la fábrica por defecto utilizando este código:
import javax.validation.Validation;
import javax.validation.Validator;
import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator;
private static final Validator VALIDATOR =
Validation.byDefaultProvider()
.configure()
.messageInterpolator(new ParameterMessageInterpolator())
.buildValidatorFactory()
.getValidator();
Eso funciona bien cuando tengo una referencia a VALIDATOR, pero no estoy seguro de cómo decirle a Spring que use lo anterior en lugar de la OptionalValidatorFactoryBean, que extiende LocalValidatorFactoryBean, que creo está rellenada con el validador de Validation.buildDefaultValidatorFactory() basado en el javadoc de LocalValidatorFactoryBean.
En resumen, ¿cómo reemplazo la fábrica de validadores por defecto de Spring Validation.buildDefaultValidatorFactory() con Validation.byDefaultProvider().configure().messageInterpolator(new ParameterMessageInterpolator()).buildValidatorFactory().getValidator() para evitar la dependencia del Lenguaje de Expresiones?
davy.ai
Para reemplazar la default
Validation.buildDefaultValidatorFactory()
de Spring conValidation.byDefaultProvider().configure().messageInterpolator(new ParameterMessageInterpolator()).buildValidatorFactory().getValidator()
, puedes crear unbean
personalizadoValidatorFactory
en la configuración de Spring.Primero, crea una nueva clase que implemente la interfaz
javax.validation.ValidatorFactory
. En esta clase, define la lógica necesaria para crear y configurar la instancia del validador:Luego, crea un
bean
en el archivo de configuración de Spring que declare esta fábrica de validadores personalizada:Finalmente, configura tu
LocalValidatorFactoryBean
para que use esta fábrica personalizada:Al hacer esto, Spring usará tu fábrica de validadores personalizada en lugar de la predeterminada proporcionada por Hibernate, lo que te permitirá evitar la dependencia del lenguaje de expresiones.