Skip to content

Commit cd2b7af

Browse files
committed
Avoid reflection on OptionalValidatorFactoryBean
Closes gh-28939
1 parent 2e1538a commit cd2b7af

File tree

3 files changed

+11
-20
lines changed

3 files changed

+11
-20
lines changed

spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.util.List;
2323
import java.util.Map;
2424

25-
import org.springframework.beans.BeanUtils;
2625
import org.springframework.beans.factory.BeanInitializationException;
2726
import org.springframework.beans.factory.annotation.Qualifier;
2827
import org.springframework.context.ApplicationContext;
@@ -71,6 +70,7 @@
7170
import org.springframework.util.StringUtils;
7271
import org.springframework.validation.Errors;
7372
import org.springframework.validation.Validator;
73+
import org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean;
7474

7575
/**
7676
* Provides essential configuration for handling messages with simple messaging
@@ -550,15 +550,12 @@ protected Validator simpValidator() {
550550
validator = this.applicationContext.getBean(MVC_VALIDATOR_NAME, Validator.class);
551551
}
552552
else if (ClassUtils.isPresent("jakarta.validation.Validator", getClass().getClassLoader())) {
553-
Class<?> clazz;
554553
try {
555-
String className = "org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean";
556-
clazz = ClassUtils.forName(className, AbstractMessageBrokerConfiguration.class.getClassLoader());
554+
validator = new OptionalValidatorFactoryBean();
557555
}
558556
catch (Throwable ex) {
559-
throw new BeanInitializationException("Could not find default validator class", ex);
557+
throw new BeanInitializationException("Failed to create default validator", ex);
560558
}
561-
validator = (Validator) BeanUtils.instantiateClass(clazz);
562559
}
563560
else {
564561
validator = new Validator() {

spring-webflux/src/main/java/org/springframework/web/reactive/config/WebFluxConfigurationSupport.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
import reactor.core.publisher.Mono;
2424

25-
import org.springframework.beans.BeanUtils;
2625
import org.springframework.beans.factory.BeanInitializationException;
2726
import org.springframework.beans.factory.annotation.Qualifier;
2827
import org.springframework.context.ApplicationContext;
@@ -45,6 +44,7 @@
4544
import org.springframework.validation.Errors;
4645
import org.springframework.validation.MessageCodesResolver;
4746
import org.springframework.validation.Validator;
47+
import org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean;
4848
import org.springframework.web.bind.WebDataBinder;
4949
import org.springframework.web.bind.annotation.WebAnnotationsRuntimeHintsRegistrar;
5050
import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
@@ -388,15 +388,12 @@ public Validator webFluxValidator() {
388388
Validator validator = getValidator();
389389
if (validator == null) {
390390
if (ClassUtils.isPresent("jakarta.validation.Validator", getClass().getClassLoader())) {
391-
Class<?> clazz;
392391
try {
393-
String name = "org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean";
394-
clazz = ClassUtils.forName(name, getClass().getClassLoader());
392+
validator = new OptionalValidatorFactoryBean();
395393
}
396-
catch (ClassNotFoundException | LinkageError ex) {
397-
throw new BeanInitializationException("Failed to resolve default validator class", ex);
394+
catch (Throwable ex) {
395+
throw new BeanInitializationException("Failed to create default validator", ex);
398396
}
399-
validator = (Validator) BeanUtils.instantiateClass(clazz);
400397
}
401398
else {
402399
validator = new NoOpValidator();

spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525

2626
import jakarta.servlet.ServletContext;
2727

28-
import org.springframework.beans.BeanUtils;
2928
import org.springframework.beans.factory.BeanFactoryUtils;
3029
import org.springframework.beans.factory.BeanInitializationException;
3130
import org.springframework.beans.factory.annotation.Qualifier;
@@ -68,6 +67,7 @@
6867
import org.springframework.validation.Errors;
6968
import org.springframework.validation.MessageCodesResolver;
7069
import org.springframework.validation.Validator;
70+
import org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean;
7171
import org.springframework.web.HttpRequestHandler;
7272
import org.springframework.web.accept.ContentNegotiationManager;
7373
import org.springframework.web.bind.WebDataBinder;
@@ -760,15 +760,12 @@ public Validator mvcValidator() {
760760
Validator validator = getValidator();
761761
if (validator == null) {
762762
if (ClassUtils.isPresent("jakarta.validation.Validator", getClass().getClassLoader())) {
763-
Class<?> clazz;
764763
try {
765-
String className = "org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean";
766-
clazz = ClassUtils.forName(className, WebMvcConfigurationSupport.class.getClassLoader());
764+
validator = new OptionalValidatorFactoryBean();
767765
}
768-
catch (ClassNotFoundException | LinkageError ex) {
769-
throw new BeanInitializationException("Failed to resolve default validator class", ex);
766+
catch (Throwable ex) {
767+
throw new BeanInitializationException("Failed to create default validator", ex);
770768
}
771-
validator = (Validator) BeanUtils.instantiateClass(clazz);
772769
}
773770
else {
774771
validator = new NoOpValidator();

0 commit comments

Comments
 (0)