Validation 예외도 Enum 으로 관리할 수 없을까?
Framework/Spring 2025. 7. 15. 21:34Validation 예외도 Enum 으로 관리할 수 없을까?

🤔 시작은 작은 의문에서프로젝트에서 API 에러를 통일된 구조로 관리하기 위해 모든 도메인 예외는 ErrorCode 라는 열거형 기반으로 처리하고 있었습니다. 예를 들어 댓글 도메인에서 예외가 발생하면 CommentErrorCode 에 정의된 코드와 메세지를 기반으로 일관된 응답을 내려줍니다.public enum CommentErrorCode implements ErrorCode { COMMENT_NOT_FOUND("댓글을 찾을 수 없습니다.", HttpStatus.NOT_FOUND), INVALID_CONTENT("댓글 내용이 유효하지 않습니다.", HttpStatus.BAD_REQUEST); ...}이 구조는 도메인마다 책임을 분리해서 관리할 수 있다는 점이 유지보수 측면에서 큰 장..

Enum 을 활용한 Spring 예외처리
Framework/Spring 2025. 7. 12. 20:08Enum 을 활용한 Spring 예외처리

Spring 기반의 백엔드 프로젝트에서 예외 처리는 단순한 오류 대응을 넘어 유지보수성, 디버깅 편의성, 클라이언트와의 명확한 약속을 위해 반드시 체계적으로 설계되어야 합니다. 이번 글에서 도메인별 ErrorCode enum + 도메인별 커스텀 Exception + GlobalExceptionHandler 패턴에 대해 구체적으로 알아보겠습니다.✅ 예외 처리 구조 개요구조 목표도메인별로 에러를 세분화하고 의미 있는 코드를 부여응답 포맷을 통일해 프론트와 명확한 약속 제공예외 메시지를 한 곳에서 관리하여 유지보수 효율 극대화예외 흐름 요약서비스/도메인에서 도메인별 Exception 발생 ↓DomainException 내부에 ErrorCode 포함 (ex: MemberErrorCode, PostError..

Spring Bean Scope 총정리!
Framework/Spring 2025. 5. 30. 20:21Spring Bean Scope 총정리!

Spring 의 핵심 개념 중 하나는 바로 Bean 입니다. Bean 은 Spring 컨테이너에 의해 관리되는 객체로, 객체의 라이프사이클과 의존성 주입을 컨트롤할 수 있습니다. 그런데 모든 Bean이 같은 방식으로 동작하지는 않습니다. 이때 Bean 의 생성과 라이프사이클을 결정하는 것이 바로 Bean Scope 입니다.Bean Scope 란?Bean Scope 는 Bean 이 생성되고 관리되는 방식과 생명주기를 정의합니다. Spring 은 기본적으로 Singleton Scope 를 사용하지만 필요에 따라 다른 Scope 로 변경할 수 있습니다. 다음 표는 Spring 에서 제공하는 주요 Bean Scope 입니다.Scope설명singleton기본 스코프, 애플리케이션 컨텍스트당 단 하나의 인스턴스를 ..

Left & Right 대신 Leading & Trailing 사용하기
Framework/UIKit 2025. 5. 28. 03:10Left & Right 대신 Leading & Trailing 사용하기

iOS 앱을 개발하다 보면 AutoLayout 을 자연스럽게 사용하게 됩니다. 그런데 실제로 앱을 만들며 AutoLayout 을 사용하다 보면 한 가지 의문이 생깁니다. "왜 left 와 right 가 있는데 굳이 leading 과 trailing 을 써야 할까?" 처음에는 비슷해 보이지만 앱을 다국어로 지원하거나 조금 더 다양한 사용자 환경을 고민하기 시작하면 이 차이에 대해 명확히 알게 됩니다.Apple 은 위 이미지처럼 공식문서에 left/right 대신 leading/triling 을 사용도록 명시하고 있습니다.그렇다면 실제로 왜 leading 과 trailing 을 쓰는 게 중요한지, 그리고 그것이 앱을 어떻게 더 사용자 친화적이고 글로벌하게 만들어주는지 알아보겠습니다.Left 와 Right 사..

Spring IoC/DI 컨테이너는 어떻게 동작할까?
Framework/Spring 2025. 5. 20. 20:17Spring IoC/DI 컨테이너는 어떻게 동작할까?

Spring 프레임워크를 다루다 보면 가장 자주 마주치게 되는 개념이 바로 IoC(Inversion of Control)와 DI(Dependency Injection)입니다. 그리고 이 개념들을 실질적으로 구현하고 관리하는 핵심 구조가 Spring 컨테이너입니다. Spring , IoC, DI 컨테이너는 개발자들이 비슷한 의미로 혼용해서 사용하는 표현입니다.Spring vs IoC vs DI 컨테이너이 세 가지 용어는 자주 함께 등장하지만 관점에 따라 각각의 의미가 다릅니다.용어설명관점SpringIoC/DI 를 실현하는 Spring 프레임워크의 핵심 구성 요소구현체IoC객체 생성 및 제어 흐름을 외부에 위임하는 설계 원칙설계 철학DI객체가 의존하는 객체를 외부에서 주입받는 방식구현 기법 즉 Spring ..

JPA 는 왜 등장했을까?
Framework/JPA 2025. 5. 17. 00:46JPA 는 왜 등장했을까?

Java 를 비롯한 현대 프로그래밍 언어는 대부분 객체지향(OOP)을 기반으로 설계됩니다. 개발자는 도메인 모델을 클래스로 정의하고 객체 간의 메시지를 주고받으며 시스템을 구축하게 됩니다.하지만 우리가 데이터를 저장할 때는 여전히 관계형 데이터베이스를 사용합니다. 이는 두 패러다임의 충돌을 야기합니다. 개발자는 데이터를 저장하기 위해 SQL 을 작성하고 객체를 직접 DB 와 연결하는 반복적인 코드를 작성하게 됩니다. 이 과정에서 객체 간의 책임과 협력이라는 객체지향의 핵심이 사라지고 데이터 저장과 조회 중심의 데이터 중심 설계로 바뀌게 됩니다.패러다임 불일치란 무엇일까?객체지향과 관계형 데이터베이스는 전혀 다른 개념과 철학을 기반으로 합니다.이를 흔히 "패러다임 불일치(Paradigm Mismatch)"..

image