🔤 타입 변환이란?
- 스프링의 데이터 바인딩 과정에서
문자열 ↔ 객체, 객체 ↔ 객체로 타입을 변환해 주는 메커니즘- 웹 요청 파라미터는 기본이 문자열(String)이므로,
실제 로직에서 쓰려면 숫자, 도메인 객체 등으로 바꿔야 함
🧪 예시 1) 문자열 → 숫자 (수동 변환, HttpServletRequest)
@GetMapping("/param")
public void param(HttpServletRequest request) {
String stringExample = request.getParameter("example"); // 항상 String
Integer integerExample = Integer.valueOf(stringExample); // 직접 변환
log.info("integerExample = {}", integerExample);
}
→ 요청 파라미터는 항상 문자열로 들어옴
→ 다른 타입으로 쓰려면 검증 + 변환 로직을 직접 넣어야 함
⚡ 예시 2) 자동 변환 (@RequestParam)
@GetMapping("/v2/param")
public void paramV2(@RequestParam Integer example) {
log.info("example = {}", example); // 자동으로 Integer 바인딩
}
→ 추가 코드 없이 문자열 "10" → 숫자 10으로 자동 바인딩됨
✅ 결론 (요점)
@RequestParam을 쓰면 "10" → 10(Integer)로 자동 변환됨@ModelAttribute, @PathVariable에도 적용됨🧩 Converter 인터페이스란?
- "특정 타입 → 다른 타입" 변환 로직을 캡슐화하는 스프링 인터페이스
- 변환을 일관되게 재사용할 수 있음
🆕 새로운 타입 변환 예시 (커스텀 타입)
localhost:8080/type-converter?person=wonuk:120"wonuk:120" 같은 문자열 → Person 객체로 변환public class Person {
private String name;
private String age;
}
→ 예시 변환: wonuk:120 → name: wonuk, age: 10
🛠️ Converter 인터페이스
implements 해서 등록하면 됨🧠 요약 정리
| 구분 | 설명 | 예시 / 특징 |
|---|---|---|
| 타입 변환 (Type Conversion) | 스프링에서 문자열 ↔ 객체, 객체 ↔ 객체 변환을 처리하는 기능 | 웹 요청 파라미터 "10" → Integer 10 |
| 수동 변환 | HttpServletRequest로 받은 문자열을 직접 변환 | Integer.valueOf(stringExample) |
자동 변환 (@RequestParam) | 스프링이 내부적으로 TypeConverter를 사용해 문자열을 숫자·객체로 자동 변환 | @RequestParam Integer example |
| 적용 범위 | @RequestParam, @ModelAttribute, @PathVariable 등에서 자동 변환 지원 | "10" → Integer 10 |
| Converter 인터페이스 | 스프링이 제공하는 타입 변환 인터페이스. implements 후 Bean 등록하면 사용 가능 | Converter<String, Person> |
| 새로운 타입 변환 예시 | "wonuk:120" 문자열을 Person 객체로 변환 | name=wonuk, age=10 |
| 특징 | - 변환 로직 캡슐화 - 재사용성 높음 - 일관성 있는 타입 변환 가능 | 모든 타입(T)에 적용 가능 |