IT/Java13 [Java] Enum을 JSON으로 직렬화할 때 주의할 점 – @JsonValue, @JsonCreator 활용법 Spring Boot 기반 REST API에서 enum을 사용하는 경우,프론트와 JSON 데이터를 주고받을 때 직렬화(서버 → JSON), 역직렬화(JSON → 서버) 문제가 자주 발생합니다.API 응답 시 Enum.name()이 그대로 나가거나클라이언트에서 String 값을 보냈는데 Jackson이 Enum으로 못 바꾸는 경우이런 상황은 프론트와 API의 통신 오류로 이어질 수 있습니다.이번 글에서는 실무에서 자주 발생하는 Enum 매핑 이슈와이를 해결할 수 있는 @JsonValue / @JsonCreator 사용법을 정리해보겠습니다.기본 Enum 직렬화 방식은?다음과 같은 Enum이 있다고 가정합니다.public enum Status { READY, RUNNING, DONE}기본적으로 Sprin.. 2025. 6. 1. [Java] Record vs. Lombok – 무엇을 언제 써야 할까? 소개Java에서 불변 객체(immutable object) 를 만들 때 흔히 사용하는 두 가지 방식이 있습니다.바로 Record와 Lombok입니다.둘 다 getter, toString, equals, hashCode, 생성자 등을 자동으로 생성해주지만 철학과 구현 방식, 사용 목적은 분명히 다릅니다.이번 글에서는 Record와 Lombok의 차이를 명확히 정리하고, 실무에서 언제 어떤 것을 선택하면 좋은지에 대해 알아보겠습니다.1. Java Record란?record는 Java 14에 미리보기 기능으로 도입되었고,Java 16부터 정식으로 지원되는 불변 데이터 클래스를 위한 문법입니다.public record User(String name, int age) {}위 한 줄로 다음과 같은 클래스를 생성할 .. 2025. 5. 31. [Java] Enum을 똑똑하게 사용하는 실무 패턴 정리 ✅ 왜 Enum을 잘 써야 할까요?Java의 enum은 단순히 상수를 나열하는 기능을 넘어서,비즈니스 로직과 상태를 안전하게 표현할 수 있는 강력한 도구입니다.하지만 많은 코드에서는 여전히 if (type == A)와 같은 방식으로만 사용되고 있습니다.이번 글에서는 실무에서 Enum을 더 똑똑하게 사용하는 방법을 정리하였습니다.✅ 1. 기본적인 Enum 선언public enum OrderStatus { READY, PAID, SHIPPED, CANCELED}가장 기본적인 상태 표현 방법입니다.실무에서는 코드, 설명, DB 값 등 추가 정보가 필요한 경우가 많습니다.✅ 2. 필드와 생성자 추가하기 (코드 + 설명 포함)public enum OrderStatus { READY("R", "결제대기".. 2025. 5. 25. [Java] Optional이란?? Java 8부터 도입된 Optional은 NullPointerException을 방지하고 명시적으로 null 가능성을 표현할 수 있도록 도와주는 컨테이너 클래스입니다. Optional을 사용하면 null 체크를 보다 선언적으로 처리할 수 있습니다.✅ Optional의 바람직한 사용 예public Optional getUserEmail(Long userId) { User user = userRepository.findById(userId); return Optional.ofNullable(user.getEmail());}Optional.ofNullable()을 통해 null이 될 수 있는 값을 안전하게 감쌉니다.클라이언트 코드에서는 isPresent(), ifPresent(), orElse() .. 2025. 5. 23. 이전 1 2 3 4 다음 반응형