Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 책
- RNN
- elman network
- 백준
- 독후감
- 쥐 3부작
- star-crossed lovers
- 무라카미 하루키
- 파이썬
- 스택
- 미국주식
- Spring
- 오블완
- 목표
- 10828
- unterm rad
- 상실
- 소설
- 짝지어 제거
- 프로그래머스
- 알고리즘
- 자료구조
- unexpectedtypeexception
- 상실의 시대
- 개발자가 영어도 잘해야하나요?
- 박제가 되어 버린 천재
- Python
- 노르웨이의 숲
- 에반게리온 해석
- elman
Archives
- Today
- Total
Dawn
[Spring] 제약조건 검증 오류, @Vaild jakarta.validation.UnexpectedTypeException 본문
Spring
[Spring] 제약조건 검증 오류, @Vaild jakarta.validation.UnexpectedTypeException
woosikwoosik 2025. 3. 3. 04:16반응형
jakarta.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'jakarta.validation.constraints.Size' validating type 'java.lang.Integer'. Check configuration for 'age'
@Size 제약 조건이 Integer 타입인 age 필드에 적용되었으나, @Size는 Integer 타입을 지원하지 않는다.
//오류 발생지점
@Size(min = 19, max = 28, message = "나이는 19세 이상 28세 이하로 입력해주세요.")
private int age;
진행 중인 프로젝트에서 회원의 나이 제한을 두는 지점에서 오류가 발생했다.
@Size는 문자열이나 컬렉션, 배열 등의 길이나 크기를 검증하는 데 사용된다.
하지만 여기서는 int로 정의된 필드에 적용을 했기 때문에 오류가 발생했다.
수정
@Min(value = 1, message = "나이는 19세 이상이어야 합니다.")
@Max(value = 100, message = "나이는 28세 이하여야 합니다.")
private int age;
import org.hibernate.validator.constraints.Range
@Range(min = 19, max = 28, message = "나이는 19세 이상 28세 이하로 입력해주세요.")
private int age;
위와 같이 @Min, @Max를 이용해 최소, 최대를 지정하는 방법과
hibernate validator에서 제공하는 @Range를 사용해 범위를 지정해서 해결할 수 있었다.
오류를 찾게된 계기, @Valid
처음 코드를 짜고 테스트할 때는 오류가 발생하지 않았었다.
@PostMapping("/signup")
public Response<UserRes.SignUpRes> signup(@Valid @RequestBody UserReq.SignUpReq signUpReq) {
return Response.ok(userService.signup(signUpReq));
}
컨트롤러 메서드의 파라미터에 @Valid를 붙이면서 입력 값 검증이 엄격해지며 발생했다.
어노테이션을 사용하며 입력 데이터 유효성을 보장하고,
if (signUpReq.getAge() < 19 || signUpReq.getAge() > 28)
과 같은 방식으로 하드코딩할 필요도 없어졌다.
에러 역시 MethodArgumentNotValidException 로 던져주기 때문에 에러처리를 할 필요도 없어졌다.
찾아보니 SQL 인젝션이나 잘못된 데이터들을 막아내기에 서비스의 안정성 역시 좋아진다고 한다.
검증과정이 하나 더 생긴 것이기에 요청 처리 시간이 약간은 증가할 수 있다고 하지만 미미한 차이로 예상되고 내 상황처럼 입력 데이터가 중요한 POST, PATCH와 같은 요청에서 사용하면 도움을 받을 수 있을 것이다.
반응형
'Spring' 카테고리의 다른 글
[ERROR] no candidates found for method call, project jdk is misconfigured 해결과정 (1) | 2024.09.25 |
---|