Spring

Spring에서 API 예외 처리는 일반 웹 페이지 예외 처리와는 다른 접근이 필요하다. API는 오류 발생시 JSON 형태로 적절한 오류 응답을 제공해야 하기 때문이다. Spring에선 @ExceptionHandler와 @ControllerAdvice를 사용해서 이 문제를 해결한다. @ExceptionHandler의 필요성 HTML과 API 오류 처리의 차이를 생각해보자. HTML 페이지는 단순히 오류 페이지(4XX, 5XX)를 보여주면 된다. 반면에 API는 각 오류 상황에 맞는 JSON 응답과 HTTP 상태 코드를 제공해야 한다. 기존 예외 처리 방식인 BasicErrorController는 HTML 오류 페이지 중심으로 동작하고 API처럼 예외마다 다른 JSON 응답 포맷이 필요한 경우에는 유..
오늘은 싱글톤 패턴에 대해서 공부해보겠다. package com.naver.shopping.singleton;import com.naver.shopping.AppConfig;import com.naver.shopping.member.MemberService;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import static org.assertj.core.api.Assertions.assertThat;public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig app..
인프런을 공부하면서 알게 된 것들 정리    스프링 컨테이너    스프링 컨테이너 생성  ApplicationContext는 스프링 컨테이너로, 자바 설정 파일(AppConfig.class)을 사용하여 빈을 등록하고 관리한다. 자바 코드와 XML 설정을 모두 지원한다. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); AppConfig.class는 자바 설정 클래스이다.스프링 컨테이너는 이 클래스를 읽어 빈을 등록한다.    스프링 빈 등록 및 조회  스프링 컨테이너는 빈 이름과 타입을 기준으로 빈을 등록하고 조회한다. 동일한 타입의 빈이 둘 이상 존재하면 이름을 지정해야 하며 부모..
JUnit이란?   JUnit은 자바에서 단위 테스트를 작성하고 실행하기 위한 프레임워크이다. Spring Boot에서는 JUnit 5 (JUnit Jupiter)를 사용한다. 먼저 JUnit5에서 자주 사용되는 테스트 검증 라이브러리인 Assertions에 대해서 간단히 알아보고 실제 코드와 함께 테스트 하는 과정을 이어나가보자. JUnit에서 제공하는 다양한 Assertion 메서드를 사용하여 예상 결과와 실제 결과를 비교할 수 있다. 테스트는 생산성을 높이고 애플리케이션의 품질 보장을 위해선 필수적으로 거쳐야 하는 단계이다.    JUnit의 주요 어노테이션들은 크게 @Test : 테스트 메서드 정의@BeforeEach: 각 테스트 메서드 실행 전에 실행될 메서드를 정의한다.@AfterEach: 각..
이번 시간엔 스프링의 주요 개념인 Bean에 대해 간단히 알아보는 시간을 가져보겠다. 스프링 빈(Spring Bean)은 스프링 프레임워크의 핵심 개념으로, 애플리케이션의 객체를 관리하고 의존성을 주입하는 역할을 한다.     스프링 빈 생성 이유  스프링 컨테이너는 빈을 생성하고, 라이프사이클을 관리하며 필요한 곳에 빈을 주입함으로써 객체 간의 결합도를 낮추고 유지보수성을 높인다.  1. 라이프사이클 관리라는게 뭘까?  예를 들어보자. 데이터베이스 연결이나 파일 I/O와 같은 리소스는 제대로 관리하지 않으면 메모리 누수 등의 문제가 발생할 수 있다. 하지만 스프링 빈 라이프사이클 내에서 자동 관리가 가능하다. 스프링 컨테이너는 애플리케이션 실행 시 필요한 빈을 자동으로 생성하고 초기화와 소멸까지 전부 ..
hskhsmm
'Spring' 태그의 글 목록