Spring 실무 예외처리 전략
Spring 실무 예외 전략은 커스텀 예외로 “실패의 의미”를 타입과 에러 코드로 고정하는 데서 시작한다. ErrorCode+AppException+@RestControllerAdvice로 응답을 표준화하고, Invalid/404/409/401/403/외부연동(502/503) 등으로 분류하면 운영·디버깅이 쉬워진다.
Spring 실무 예외 전략은 커스텀 예외로 “실패의 의미”를 타입과 에러 코드로 고정하는 데서 시작한다. ErrorCode+AppException+@RestControllerAdvice로 응답을 표준화하고, Invalid/404/409/401/403/외부연동(502/503) 등으로 분류하면 운영·디버깅이 쉬워진다.
InetAddress는 자바에서 호스트 이름과 IP(IPv4/IPv6)를 표현하고 DNS 해석을 수행하는 핵심 클래스다. getByName/getAllByName은 블로킹과 JVM DNS 캐시, IPv6 우선순위 영향을 받는다. 역조회는 지연을 유발할 수 있어 주의하며, SSRF 방어 등 신뢰 경계 설계가 중요하다.
@Lob는 JPA에서 필드가 대용량 데이터(LOB)임을 선언해 TEXT/CLOB 또는 BLOB로 저장되게 하는 매핑 애노테이션이다. MySQL은 글자 수가 아닌 바이트 기준이며 utf8mb4에서 한글은 약 3바이트/자라 TEXT(64KB)는 대략 2만 자 수준이다. 목록/검색/캐시까지 함께 설계해야 한다.
CQRS 실습 시리즈 2편에서는 1편에서 만든 멀티모듈/서비스 분리 구조를 로컬에서 실행 가능한 상태로 완성합니다. Docker로 MySQL/Redis를 띄우고, 3개 Spring Boot 앱을 8081/8082/8083 포트로 동시에 실행한 뒤 curl로 스모크 테스트를 수행해 다음 편(이벤트/프로젝션) 준비를 끝냅니다.
CQRS 실습 시리즈 1편에서는 주문/결제/주문내역 도메인을 대규모 트래픽 관점에서 바라보며, 쓰기(Command)와 읽기(Query)를 분리하는 목표와 기본 가정을 정리합니다. 이어서 order-command, payment-command, order-query로 서비스 경계를 확정하고, 멀티모듈로 “한 레포, 여러 Spring Boot 앱” 구조를 설계합니다.
Spring Boot 개발의 필수품, Jackson ObjectMapper의 핵심 기능과 실무 사용법을 총정리했습니다. 직렬화(Serialization)와 역직렬화(Deserialization)의 기본 개념부터 writeValueAsString, readValue, convertValue 등 필수 메서드 5가지의 활용법을 예제 코드로 상세히 설명합니다. 또한, TypeReference를 이용한 리스트 파싱 주의사항과 JavaTimeModule 등 실무 환경에 최적화된 설정 방법까지 함께 다룹니다.