Spring
[Spring]TypeConverter
Paragon53
2025. 4. 17. 17:24
Spring
🔥 Spring에서 객체의 타입을 서로 변환하는 데 사용되는 인터페이스
🎯 Spring의 데이터 바인딩 과정에서 문자열을 특정 객체로 변환하거나 하나의 객체 타입을
다른 타입으로 변환할 때 사용한다.
✅ 언제 사용 되는가?
- @RequestParam, @PathVariable, @ModelAttribute 등으로 값 받을 때
- 폼 데이터를 자바 객체로 바꾸거나 반대로 변환할 때
- 커스텀 객체가 필요한데 기본 변환기로 부족할 때
Ex) 상황 예시
◆ 직접 변환 할 때
@GetMapping("/age-check")
public String checkAge(HttpServletRequest request) {
String ageStr = request.getParameter("age"); // "30" ← String 형태로 들어옴
Integer age = Integer.valueOf(ageStr); // 수동으로 Integer 변환
return "당신의 나이는 " + age + "살입니다.";
}
Requst로 JSON을 받아온다(입력) | 서버 내부에서 직접 변환할때, |
{ "age" : "30" } |
String ageStr = request.getParameter("age"); // "30" ← String 형태로 들어옴 Integer age = Integer.valueOf(ageStr); // 수동으로 Integer 변환 |
◆ Spring의 @RequestParm으로 받을때
@GetMapping("/age-check")
public String checkAge(@RequestParam Integer age) {
return "당신의 나이는 " + age + "살입니다.";
}
- 이때 Spring 내부의 TypeConvert가 string에서 Integer 변환을 자동으로 해준다.
- 예외 발생시 Spring이 자동으로 예외 처리 해준다.
차이: 결과는 같지만, 책임 주체와 확장성, 예외 처리 방식이 다르다!
✅ 요약
- 스프링에서 타입 변환은 자동으로도 많이 해줌
- 하지만 내가 정의한 타입은 직접 Converter 만들어야 한다.
- addFormatters() 통해 등록
- 실무에선 폼 입력값 처리할 때 자주 등장