개발 기록/회고
Spring MVC Controller에서 new를 없애야 하는 진짜 이유
2025.05.28
Spring MVC Controller에서 객체 생성을 지양해야 하는 이유– 에스크로 프로젝트를 진행하며 얻은 실전 교훈에스크로 트랜잭션 상태 변경 기능을 만들면서 겪은 고민Spring Boot 기반으로 에스크로 서비스를 직접 구현하면서, 거래 상태를 변경하는 기능을 만들게 되었다.처음에는 빠르게 동작하는 코드를 만드는 데 집중했고, 자연스럽게 Controller 내부에서 필요한 객체들을 직접 생성하는 방식으로 구현했다.아래는 처음 작성한 코드이다..@PostMapping("/{id}/status")public ResponseEntity updateStatus( @PathVariable Long id, @RequestBody @Valid TransactionStatusUpdate..
개발 기록/회고
Spring Boot 입문기 – @Getter, @Setter, 그리고 Controller 어노테이션을 처음 마주했을 때
2025.05.26
최근 개인 프로젝트를 진행하면서 본격적으로 Spring Boot를 처음 사용하게 되었다.그동안 Node.js 위주로 백엔드를 개발해왔기 때문에 Java 기반의 Spring 생태계는 익숙하지 않았다.그래서 하나하나 개념을 정확하게 정리하고 넘어가는 것이 중요하다고 판단했다.Spring을 사용하면서 가장 먼저 접하게 된 것이 바로 @Getter, @Setter, @RestController 같은 어노테이션들이었다.처음엔 단순히 자동으로 코드를 줄여주는 도구 정도로 생각했지만, "어떤 상황에서 어떤 어노테이션을 써야 하고, 왜 써야 하는지"가 점점 더 중요하게 느껴졌다.이 글은 Spring Boot 입문자가 실무에 적응하는 과정에서 마주치는 핵심 어노테이션들을 정리한 기록이다.Entity와 DTO는 어떤 기준..
백엔드 개발/API · 아키텍처 설계
DTO → Command → UseCase 패턴으로 본 구조적 백엔드 설계
2025.05.26
최근 프로젝트에서 Spring을 활용해 Item 등록 기능을 Clean Architecture 방식으로 설계해보았습니다. 이 구조가 왜 효과적인지, 어떤 방식으로 구성되었는지를 직접 정리해봅니다. 1. 전체 구조의 목적Controller → DTO → UseCase(Command) → Domain(Entity) + Factory → Repository → DBSpring에서는 역할 분리를 명확히 하여 테스트 용이성과 유지보수성을 높이는 것이 핵심입니다.각 계층은 다음과 같은 목적을 가집니다:Controller: HTTP 요청/응답 처리DTO: 외부 입력을 안전하게 감싸는 구조Command: 내부 유스케이스 전용 입력 모델UseCase: 실제 기능 로직의 진입점Entity: DB와 매핑되는 도메인 객체Fa..
GIT
이슈 기반 Git 브랜치 전략과 협업 흐름 완전 정리
2025.05.24
GitHub 이슈 기반 브랜치 전략 및 협업 워크플로우GitHub의 Issue(이슈)를 중심으로 기능 개발을 진행하면 작업 단위를 명확히 나눌 수 있고, 진행 상황과 책임자 관리가 쉬워집니다. 이 문서에서는 이슈를 기반으로 브랜치를 생성하고 작업한 후, Pull Request(PR)를 통해 병합하는 전 과정을 정리합니다.1. 이슈 생성 및 분류기능 단위로 아래 내용을 포함한 이슈를 생성합니다:제목: ex) [FEAT] 미션 생성 기능 구현내용: 기능 명세, 관련 문서 링크 등담당자: 본인 또는 팀원 지정마일스톤: 배포일정, 스프린트 주기 등라벨: feature, bug, refactor, urgent 등이슈 생성 시 각 작업을 추적할 수 있도록 세부 정보를 기입합니다.2. 브랜치 생성이슈 기반으로 기능 ..
GIT
협업을 위한 Git 브랜치 전략과 충돌 해결 완전 가이드
2025.05.24
협업을 위한 Git 사용 가이드협업 시 Git을 올바르게 사용하지 않으면 충돌(merge conflict)이 자주 발생할 수 있습니다. 특히 main 브랜치에서 파생된 feature 브랜치에서 작업하고, PR(Pull Request)을 보낼 때 충돌이 생기는 경우는 협업 구조와 워크플로우에 대한 이해가 부족한 경우가 많습니다. 이 문서에서는 로컬, 원격(GitHub), 브랜치 전략을 중심으로 협업 시 Git을 효율적으로 사용하는 방법을 정리합니다.1. Git 기본 구조 이해하기▶︎ 로컬(Local) vs 원격(Remote)로컬 저장소: 내 컴퓨터에서 작업하는 Git 저장소원격 저장소(GitHub): 팀원들과 공유하는 중앙 저장소push: 로컬 변경사항을 원격 저장소로 업로드pull: 원격 저장소의 변경사..