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 |
Tags
- java #문법
- sql #부트캠프 #내일배움캠프 #웹관리자 #도전 #학습
- sql #내일배움캠프 #스파르타코딩클럽
- html #css #부트스트랩 #웹사이트 #개발 #초보 #til #내일배움캠프 #스파르타코딩클럽
- java
Archives
- Today
- Total
Hyeok의 웹 개발 블로그
<2025.04.17> Formatter 본문
🔎Formatter
- 주로 사용자 지정 포맷을 적용해 데이터 변환을 처리할 때 사용
- Formatter는 ConversionService와 비슷한 목적을 가지지만 문자열을 객체로 변환하거나 객체를 문자열로
변환하는 과정에서 포맷팅을 세밀하게 제어할 수 있다.
- Formatter Interface
- Printer, Parser 상속
- 객체를 문자로 변환하고 문자를 객체로 변환하는 두가지 기능을 모두 가지고 있다.
- Printer
- Object를 String으로 변환한다.
- Parser
- String을 Object로 변환한다.
- Formatter Interface
- Printer, Parser 상속
- 객체를 문자로 변환하고 문자를 객체로 변환하는 두가지 기능을 모두 가지고 있다.
- Printer
- Object를 String으로 변환한다.
- Parser
- String을 Object로 변환한다.
- Formatter Interface
- Printer, Parser 상속
- 객체를 문자로 변환하고 문자를 객체로 변환하는 두가지 기능을 모두 가지고 있다.
- Printer
- Object를 String으로 변환한다.
- Parser
- String을 Object로 변환한다.
- Formatter Interface
- String을 Object로 변환한다.
- Formatter Interface
- String을 Object로 변환한다.
💡 FormattingConversionService
- ConversionService 와 Formatter를 결합한 구현체로 타입 변환과 포맷팅이 필요한 모든 작업을 한 곳에서
수행할 수 있도록 설계되어 있어서 다양한 타입의 변환과 포맷팅을 쉽게 적용 가능.
- FormattingConversionService
- Formatter를 지원하는 ConversionService
- 어댑터 패턴을 사용하여 Formatter가 Converter처럼 동작하도록 만들어준다.
- Formatter를 지원하는 ConversionService
- DefaultFormattingConversionService
- FormattingConversionService + 통화, 숫자관련 Formatter를 추가한것
- SpringBoot의 기능
- SpringBoot는 기본적으로 WebConversionService를 사용한다.
- DefaultFormattingConversionService 상속
-
📌 Spring이 제공하는 Formatter
- Spring은 어노테이션 기반으로 원하는 형식의 Formatter를 사용할 수 있도록 기능을 제공
- 기본 제공 Formatter는 기본형식이 정해져있어서 필드마다 다른 형식으로 지정하기 어렵다.
- Annotation
- DTO 필드들에 적용 가능
- @NumberFormat
- 숫자 관련 지정 Formatter 사용
- NumberFormatAnnotationFormatterFactory
- @DateTimeFormat
- 날짜 관련 지정 Formatter 사용
- Jsr310DateTimeFormatAnnotationFormatterFactory
- Json
- @NumberFormat과 @DateTimeFormat은 폼 데이터와 URL 파라미터를 처리하는 ConversionService와 관련이 있다.
- Jackson의 직렬화/역직렬화 과정에는 기본적으로 영향을 미치지 않는다.
- @JsonFormat 나 커스텀 Deserializer를 사용하는 방식이 필요하다.
- Deserializer
- 정상적으로 변환 후 출력된다. - @JsonFormat
- @JsonFormat은 날짜 형식이나 숫자 포맷을 지정할 수 있다.
- 콤마를 포함한 숫자는 Jackson이 자동으로 변환하지 않으므로 커스텀 처리가 필요하다.
- 커스텀 데이터의 변환이 필요한 경우 Deserialize 사용
'TIL > Spring' 카테고리의 다른 글
| <2025.04.22> 배달 기능 프로젝트 피드백 (1) | 2025.04.22 |
|---|---|
| <2025.04.21> [Spring - advanced] 코드 개선 & 트러블 슈팅 (1) | 2025.04.21 |
| <2025.04.15> HttpMessageConverter (2) | 2025.04.15 |
| <2025.03.31> IOC / DI (0) | 2025.03.31 |
| <2025.03.28> 객체 지향 설계 (SOLID 원칙) (0) | 2025.03.28 |