인프런 커뮤니티 질문&답변

admin님의 프로필 이미지
admin

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 등록

javax.validation

해결된 질문

작성

·

1.9K

·

수정됨

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여기에 질문 내용을 남겨주세요.

전체 코드: https://github.com/StrawberryRabbit0623/Spring_study/tree/section7_halt

스프링 3.2.2 버전으로 강의를 따라하고 있습니다. 스프링 버전 2.x 에서는 아래 starter-validation이 기본으로 지원된다고 알고있습니다.

 

그런데 문제는 아래 implementation을 작성해도, javax.validation이 인식되지 않습니다.

 

implementation 'org.springframework.boot:spring-boot-starter-validation'

 

아래 jakarta implimentation 혹은 javax 는 javax.validation을 가능케 해주지만, 정작 @Valid가 전혀 작동하지 않습니다. 정확히는, 회원가입 시 이름란을 비우고 가입해도 전혀 문제 없이 홈페이지로 복귀합니다. 혹시나 하여 @NotBlank로 바꾸어보았지만 여전합니다.

 

implementation 'jakarta.validation:jakarta.validation-api:2.0.2'

implementation 'javax.validation:validation-api:2.0.1.Final'

종속성, 코드, 아니면 그 외의 어떤것이 문제인지 모르겠어 질문남깁니다..

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

문제점에 대해 깊이 들어가 보려 합니다. 질문자님께서는 스프링 프레임워크 3.2.2 버전을 사용하면서 @Valid 어노테이션과 관련된 starter-validation 의존성 문제를 경험하고 계시군요. javax.validation 패키지를 implementation으로 추가하였음에도 불구하고 @Valid 어노테이션이 작동하지 않는 문제가 발생했다고 하셨습니다.

이런 문제는 종종 스프링 부트 버전 업데이트에 따른 호환성 문제일 수 있으며, javax 대신 jakarta 네임스페이스로 전환되는 부분으로 인해 생길 수 있습니다. 스프링 부트 3.x 버전에서는 jakarta.* 패키지가 사용되고 있기 때문입니다.

따라서 질문자님께서 겪고 계신 문제와 관련하여 몇 가지 가능한 해결방안을 아래와 같이 추천드립니다.

  1. @NotEmpty, starter-validation 문제 - 이 질문에서 한 사용자는 @NotEmptystarter-validation에 관련된 인식 문제를 겪었습니다. 답변에 따르면 올바른 의존성 추가와 IDE의 프로젝트 설정 내에서 의존성을 재로드하여 해결을 시도하였습니다.

  2. 유효성 검사 질문 - 여기서는 @Valid, @NotEmpty와 같은 어노테이션을 사용한 유효성 검사에 대한 궁금증을 해결하기 위한 설명을 찾을 수 있었습니다. 클라이언트 측과 서버 측 유효성 검사의 차이점을 설명하고 있으며, 이해에 도움이 되실 것 같습니다.

  3. Validation (JSR-303 validation with Hibernate validator) 모듈 추가 - 이 경우 사용자가 스프링 부트 스타터에서 어떻게 유효성 검사 모듈을 추가하는지에 대해 질문했고, 답변에서는 build.gradle에 의존성을 추가하는 단계를 제시하고 있습니다.

위 링크들 중 하나라도 문제 해결에 도움이 될 수 있기를 바라면서, 질문자님의 문제가 해결되기를 기원합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

admin님의 프로필 이미지
admin
질문자

AI 인턴 덕분에 Gradle 설정을 자세히 읽어보고, 해결했습니다.

 

아래 구문을

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;

 

아래 구문으로 변경하고 해결되었습니다.

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;

 

implementation은 아래로 정의했습니다.

implementation 'org.springframework.boot:spring-boot-starter-validation'
admin님의 프로필 이미지
admin

작성한 질문수

질문하기