오늘 진행한 학습 요약
1. Spring 심화 1주차
- HttpMessageConverter
- ArgumentResolver
- TypeConverter
- ConversionService
- Formatter
- Spring Formatter
2. 알고리즘 코드카다 Day42(작성 생략)
CodingTest Git-hub 링크 : https://github.com/chews26/CodingTest
학습 정리
1. Spring 심화 1주차
HttpMessageConverter
- Spring의 HttpMessageConverter는 HTTP 요청/응답 데이터를 Java 객체와 변환하는 역할을 하는 인터페이스
- 주요 구현체
- MappingJackson2HttpMessageConverter: JSON 데이터 변환에 사용됨.
- StringHttpMessageConverter: String 데이터 변환에 사용됨.
- FormHttpMessageConverter: 폼 데이터를 Key-Value 형태로 변환함.
- ByteArrayHttpMessageConverter: 바이트 배열 데이터를 처리함.
- 동작 과정
- 요청 데이터(Content-Type)에 맞는 변환기를 선택하여 Java 객체로 변환함.
- 컨트롤러 반환 데이터를 HTTP 응답 데이터로 변환함.
- 주요 구현체
ArgumentResolver
- Spring의 HandlerMethodArgumentResolver는 컨트롤러 메서드의 매개변수를 커스텀 방식으로 해석하고 주입할 수 있도록 도와주는 인터페이스
- 주요 역할
- 요청 데이터를 읽어 매개변수에 맞게 변환
- 커스텀 주석이나 타입 기반으로 매개변수를 주입
- 동작 과정
- 등록된 ArgumentResolver 중 지원 가능한지 확인
- 요청 데이터를 매개변수에 맞는 값으로 변환하여 반환
- 구현 방법
- HandlerMethodArgumentResolver를 구현하여 커스텀 로직 작성
- supportsParameter로 매개변수 지원 여부 정의.
- resolveArgument에서 변환 로직 구현.
- 등록 방법
- WebMvcConfigurer의 addArgumentResolvers 메서드에서 추가
- 주요 역할
TypeConverter
- Spring의 TypeConverter는 문자열이나 기본 데이터 타입을 다른 타입으로 변환하는 기능을 제공하는 인터페이스
- 주요 역할
- 타입 변환: 한 타입의 값을 다른 타입으로 변환함
- 유연성 제공: 사용자 정의 변환 로직을 통해 확장 가능함.
- 사용 방식
- Spring 내장 지원: @Value 또는 Bean 설정에서 기본 타입 변환을 자동 지원함.
- Custom Converter: Converter 인터페이스를 구현해 사용자 정의 변환 로직을 추가할 수 있음.
- 구현 방법
- Converter<S, T>를 구현해 변환 로직 작성.
- ConversionService에 등록하여 사용.
- 등록 방법
- Spring의 ConversionService에 등록해 활용함.
- 주요 역할
ConversionService
- 주요 역할
- 타입 변환 관리: 등록된 변환기(Converter)를 통해 객체를 변환함.
- 유연성 제공: 사용자 정의 변환기를 등록하여 커스텀 변환 지원함.
- 주요 메서드
- canConvert(Class<?> sourceType, Class<?> targetType)
- 변환 가능 여부를 확인
- convert(Object source, Class<?> targetType)
- 주어진 객체를 대상 타입으로 변환함.
- canConvert(Class<?> sourceType, Class<?> targetType)
- 사용 방식
- Spring에서 자동 변환:
- @Value, @RequestParam, @PathVariable 등에 활용
- Custom Converter 등록:
- 변환 로직이 필요할 경우 ConversionService에 추가 가능.
- Spring에서 자동 변환:
- 구현 방법
- DefaultConversionService나 GenericConversionService 사용.
- 변환기를 등록하여 변환 로직 확장.
Formatter
- Spring의 Formatter는 문자열과 객체 간의 양방향 변환을 제공하는 인터페이스
- 주요 역할
- 문자열 → 객체 변환: 텍스트를 객체로 변환.
- 객체 → 문자열 변환: 객체를 포맷된 문자열로 변환.
- 주요 메서드
- parse(String text, Locale locale)
- 문자열을 객체로 변환.
- print(T object, Locale locale)
- 객체를 문자열로 변환.
- parse(String text, Locale locale)
- 사용 방식
- 포맷팅: 날짜, 숫자, 금액 등의 데이터 변환에 사용.
- 커스텀 포맷터 작성: 사용자가 필요한 변환 규칙 정의 가능.
- 등록 방법
- ConversionService에 등록
- @Configuration 클래스에서 addFormatters 메서드로 추가
- 주요 역할
Spring Formatter
- Spring의 Formatter는 문자열과 객체 간 변환 및 포맷을 처리하는 인터페이스
- 주요 역할
- 문자열 → 객체 변환: 텍스트를 특정 객체로 변환
- 객체 → 문자열 변환: 객체를 포맷된 문자열로 변환
- 주요 메서드
- parse(String text, Locale locale): 문자열을 객체로 변환.
- print(T object, Locale locale): 객체를 포맷된 문자열로 변환.
- 사용 방식
- 날짜, 숫자, 금액 등 데이터를 특정 포맷으로 변환하거나 파싱하는 데 사용함.
- 필요 시 사용자 정의 포맷터를 작성 가능..
- 등록 방법
- FormatterRegistry를 사용해 등록
- ConversionService에 등록해 전역으로 사용 가능
- 주요 역할