Lombok(롬복) vs Record개요스프링으로 개발하다 보면 DTO, VO, 응답 객체처럼 단순히 데이터를 담는 클래스를 자주 만들게 된다. 이때 생성자, getter, setter, toString(), equals(), hashCode() 같은 반복적인 코드를 줄이기 위해 Lombok을 많이 사용한다. 나 역시 처음에는 @Data를 거의 습관처럼 붙였고, 서비스 클래스에서는 @RequiredArgsConstructor를 자주 사용했다. 그러다 Java 16부터 도입된 record를 알게 되었고, 단순 데이터 전달 객체를 만들 때 더 적합한 선택지가 될 수 있겠다고 느꼈다.본문보일러플레이트 코드란?보일러플레이트(boilerplate) 코드는 최소한의 변경만으로 여러 곳에서 반복적으로 재사용되는 정형..
1. Spring WebFlux란?Spring WebFlux는 Spring Framework 5.0부터 도입된 완전한 비차단(Non-Blocking) 방식의 리액티브 웹 프레임워크입니다. 적은 수의 스레드로 대량의 동시 접속 요청을 효율적으로 처리하기 위해 설계되었으며, Netty, Undertow, Servlet 3.1+ 컨테이너 등 다양한 서버 환경에서 실행됩니다.기존 Spring MVC가 '요청 당 스레드(Thread-per-Request)' 모델을 사용했다면, WebFlux는 **이벤트 루프(Event Loop)**와 비동기 I/O를 통해 리소스를 극한으로 효율화합니다.핵심 특징Non-Blocking I/O: I/O 작업(DB 조회, API 호출 등) 시 스레드가 대기하지 않고 다른 작업을 처리합..
소프트웨어 공학, 특히 웹 개발을 공부하다 보면 가장 먼저 마주치게 되는 디자인 패턴이 바로 MVC(Model-View-Controller) 입니다. 단순히 코드를 나누는 것을 넘어, 유지보수와 협업을 위해 필수적인 이 패턴에 대해 정리해 봅니다.1. MVC 패턴이란?MVC (Model - View - Controller) 는 애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발하는 소프트웨어 디자인 패턴입니다.이 패턴의 핵심 목적은 "관심사의 분리(Separation of Concerns)" 입니다. 사용자가 보는 화면(View)과 데이터 처리 로직(Model)을 서로 분리함으로써, 한쪽을 수정하더라도 다른 쪽에 영향을 최소화하여 유지보수를 쉽게 만듭니다.2. 핵심 구성 요소 (The 3 Compo..
ObjectMapper는 Java 객체와 JSON 데이터를 변환하는 데 널리 사용되는 도구입니다. 하지만 매번 새로운 ObjectMapper 인스턴스를 생성하는 것은 여러 가지 문제를 야기할 수 있습니다. 이 글에서는 ObjectMapper를 매번 호출하지 말아야 하는 이유와 더 나은 사용 방법에 대해 알아보겠습니다.ObjectMapper 반복 생성의 문제점성능 저하: ObjectMapper는 내부적으로 많은 초기화 작업을 수행하기 때문에, 일반 객체에 비해 생성 비용이 높습니다.일관성 부족: 매번 새로운 인스턴스를 생성하면 날짜 형식, 직렬화 규칙 등이 매번 초기화되어 일관성이 깨질 수 있습니다.유지보수 어려움: 설정이 분산되어 있으면 코드 유지보수가 어려워집니다.캐시 효율성 저하: ObjectMapp..