[증상]

"Spring Boot 3.4"로 업데이트 후 "java.lang.IllegalStateException: No target Validator set" 에러가 발생

Caused by: java.lang.IllegalStateException: No target Validator set
	at org.springframework.util.Assert.state(Assert.java:79) ~[spring-core-6.2.3.jar:6.2.3]
Assert.java:79
	at org.springframework.validation.beanvalidation.SpringValidatorAdapter.forExecutables(SpringValidatorAdapter.java:402) ~[spring-context-6.2.3.jar:6.2.3]
SpringValidatorAdapter.java:402
	at org.springframework.validation.beanvalidation.MethodValidationAdapter.invokeValidatorForArguments(MethodValidationAdapter.java:259) ~[spring-context-6.2.3.jar:6.2.3]
	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:168) ~[spring-context-6.2.3.jar:6.2.3]
MethodValidationInterceptor.java:168
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.2.3.jar:6.2.3]
ReflectiveMethodInvocation.java:184
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:727) ~[spring-aop-6.2.3.jar:6.2.3]
CglibAopProxy.java:727

 

 

[분석]

Spring Boot 3.4에서 Configuration Properties의 Bean Validation이 변화됨


https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.4-Release-Notes#bean-validation-of-configuration-properties

 

[해결]

기존에 포함되어 있던 org.hibernate.validator:hibernate-validator 종속성에 

추가로 org.apache.tomcat.embed:tomcat-embed-el 종속성을 추가하여 해결함

    <dependency>
      <groupId>org.hibernate.validator</groupId>
      <artifactId>hibernate-validator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-el</artifactId>
    </dependency>

 

[참고]

spring-boot-starter-validation의 소스를 참고 했음

https://github.com/spring-projects/spring-boot/blob/3.4.x/spring-boot-project/spring-boot-starters/spring-boot-starter-validation/build.gradle

 

 

+ Recent posts