Provide callback mechanism for customizing validation configuration
See gh-29429
This commit is contained in:
@@ -16,8 +16,11 @@
|
||||
|
||||
package org.springframework.boot.autoconfigure.validation;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import jakarta.validation.Validator;
|
||||
import jakarta.validation.executable.ExecutableValidator;
|
||||
import jakarta.validation.valueextraction.ValueExtractor;
|
||||
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
@@ -28,8 +31,11 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
|
||||
import org.springframework.boot.autoconfigure.condition.SearchStrategy;
|
||||
import org.springframework.boot.validation.MessageInterpolatorFactory;
|
||||
import org.springframework.boot.validation.beanvalidation.CustomizableLocalValidatorFactoryBean;
|
||||
import org.springframework.boot.validation.beanvalidation.FilteredMethodValidationPostProcessor;
|
||||
import org.springframework.boot.validation.beanvalidation.MethodValidationExcludeFilter;
|
||||
import org.springframework.boot.validation.beanvalidation.customize.AddValueExtractorCustomizer;
|
||||
import org.springframework.boot.validation.beanvalidation.customize.Customizer;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Import;
|
||||
@@ -53,11 +59,20 @@ import org.springframework.validation.beanvalidation.MethodValidationPostProcess
|
||||
@Import(PrimaryDefaultValidatorPostProcessor.class)
|
||||
public class ValidationAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public static AddValueExtractorCustomizer autoAddValueExtractorCustomizer(
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" }) List<ValueExtractor> valueExtractors) {
|
||||
|
||||
return new AddValueExtractorCustomizer(valueExtractors);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||
@ConditionalOnMissingBean(Validator.class)
|
||||
public static LocalValidatorFactoryBean defaultValidator(ApplicationContext applicationContext) {
|
||||
LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean();
|
||||
public static LocalValidatorFactoryBean defaultValidator(ApplicationContext applicationContext,
|
||||
List<Customizer> customizers) {
|
||||
CustomizableLocalValidatorFactoryBean factoryBean = new CustomizableLocalValidatorFactoryBean();
|
||||
factoryBean.setCustomizers(customizers);
|
||||
MessageInterpolatorFactory interpolatorFactory = new MessageInterpolatorFactory(applicationContext);
|
||||
factoryBean.setMessageInterpolator(interpolatorFactory.getObject());
|
||||
return factoryBean;
|
||||
|
||||
Reference in New Issue
Block a user