Tech Stack/Spring Boot

[Spring] 11. Bean Scope란?

[Spring] 11. Bean Scope란?이전 글에서는 @Qualifier와 @Primary에 대해 살펴봤습니다. 같은 타입의 Bean이 여러 개 있을 때 어떤 Bean을 주입할지 정하기 위해 사용하는 방법이었습니다.이번 글에서는 Bean Scope에 대해 정리하겠습니다. Bean Scope는 Spring Bean이 생성되고 유지되는 범위를 의미합니다. 쉽게 말하면, Spring이 만든 Bean 객체를 얼마나 오래 사용하고, 몇 개나 만들 것인지 정하는 개념입니다.Spring Bean은 기본적으로 Singleton Scope로 생성됩니다. 즉, 하나의 Bean 객체를 만들어서 여러 곳에서 함께 사용합니다.1. Bean Scope란?Bean Scope는 Spring Container가 Bean을 어떤 ..

[Spring] 10. @Qualifier와 @Primary

[Spring] 10. @Qualifier와 @Primary이전 글에서는 @Autowired와 생성자 주입에 대해 살펴봤습니다. Spring은 Container 안에 등록된 Bean을 찾아 필요한 곳에 자동으로 주입해줍니다.하지만 항상 자동 주입이 쉽게 성공하는 것은 아닙니다. 특히 같은 타입의 Bean이 여러 개 등록되어 있으면 Spring은 어떤 Bean을 주입해야 할지 판단하지 못할 수 있습니다.이런 상황에서 사용하는 대표적인 방법이 @Qualifier와 @Primary입니다.1. 같은 타입의 Bean이 여러 개 있을 때 생기는 문제먼저 결제 기능을 예로 들어보겠습니다. 결제 기능을 처리하기 위해 PayService라는 인터페이스가 있다고 가정합니다.public interface PayService..

[Spring] 09. @Autowired와 생성자 주입

[Spring] 09. @Autowired와 생성자 주입이전 글에서는 @Controller, @Service, @Repository에 대해 살펴봤습니다. 이 어노테이션들은 Spring이 클래스를 Bean으로 등록할 수 있게 해주고, 각 클래스의 역할을 명확하게 구분해줍니다.이번 글에서는 등록된 Bean들이 실제로 어떻게 연결되는지 알아보겠습니다. Spring에서 의존성을 주입할 때 자주 등장하는 어노테이션이 @Autowired입니다. 그리고 의존성 주입 방식 중 가장 많이 권장되는 방식이 생성자 주입입니다.핵심은 간단합니다. @Autowired는 Spring Container 안에 있는 Bean을 찾아서 필요한 곳에 자동으로 넣어주는 역할을 합니다.1. @Autowired란?@Autowired는 Spri..

[Spring] 08. @Controller, @Service, @Repository

[Spring] 08. @Controller, @Service, @Repository이전 글에서는 @Component와 Component Scan에 대해 살펴봤습니다. Spring은 Component Scan을 통해 @Component 계열 어노테이션이 붙은 클래스를 찾아 Bean으로 등록합니다.이번 글에서는 Spring에서 자주 사용하는 역할별 어노테이션인 @Controller, @Service, @Repository를 정리하겠습니다. 이 세 가지는 단순히 Bean으로 등록하기 위한 표시가 아니라, 각 클래스가 어떤 역할을 맡는지 드러내기 위해 사용합니다.Spring 프로젝트를 안정적으로 만들려면 Controller, Service, Repository의 역할을 분리하는 것이 중요합니다.1. 역할별 어..

[Spring] 07. @Component와 Component Scan

[Spring] 07. @Component와 Component Scan이전 글에서는 Spring Container와 ApplicationContext에 대해 살펴봤습니다. Spring Container는 Bean을 생성하고, 보관하고, 필요한 곳에 주입해주는 공간입니다. 그리고 ApplicationContext는 Spring Container 역할을 수행하는 대표적인 인터페이스입니다.이번 글에서는 Spring이 Bean으로 등록할 클래스를 어떻게 찾는지 알아보겠습니다. 핵심 개념은 @Component와 Component Scan입니다.Component Scan은 Spring이 특정 패키지 안을 살펴보면서 Bean으로 등록할 클래스를 찾는 과정입니다.1. Component란?Component는 Spring..

[Spring] 06. Spring Container와 ApplicationContext

[Spring] 06. Spring Container와 ApplicationContext이전 글에서는 Bean에 대해 살펴봤습니다. Bean은 Spring Container가 생성하고 관리하는 객체입니다. Controller, Service, Repository처럼 Spring이 관리해야 하는 객체는 Bean으로 등록해서 사용할 수 있습니다.이번 글에서는 그 Bean을 실제로 만들고 보관하고 연결하는 Spring Container에 대해 정리하겠습니다. 또한 Spring에서 자주 등장하는 ApplicationContext가 무엇인지도 함께 살펴보겠습니다.Spring Container는 Bean을 생성하고, 보관하고, 필요한 곳에 주입해주는 공간입니다.1. Spring Container란?Spring Co..

[Spring] 05. Bean이란?

[Spring] 05. Bean이란?이전 글에서는 DI에 대해 살펴봤습니다. DI는 필요한 객체를 클래스 내부에서 직접 생성하지 않고, 외부에서 전달받아 사용하는 방식입니다. Spring에서는 Spring Container가 필요한 객체를 만들고, 필요한 곳에 주입해줍니다.이번 글에서는 Spring이 관리하는 객체인 Bean에 대해 정리하겠습니다. Spring을 공부하다 보면 Bean이라는 단어가 계속 등장합니다. 처음에는 낯설지만, 핵심은 어렵지 않습니다.Bean은 Spring Container가 생성하고 관리하는 객체입니다.1. Bean이란?Bean은 Spring이 직접 생성하고 관리하는 객체를 말합니다. Java에서 객체는 new 키워드로 직접 만들 수 있습니다.BoardService boardSe..

[Spring] 04. DI란?

[Spring] 04. DI란?이전 글에서는 IoC에 대해 살펴봤습니다. IoC는 객체를 개발자가 직접 생성하고 관리하는 것이 아니라, Spring이 대신 생성하고 관리하는 개념입니다.이번 글에서는 IoC와 함께 자주 등장하는 DI에 대해 정리하겠습니다. DI는 Spring을 이해할 때 반드시 알아야 하는 핵심 개념입니다.1. DI란?DI는 Dependency Injection의 줄임말입니다. 한국어로는 의존성 주입이라고 부릅니다.여기서 의존성이란 어떤 클래스가 다른 클래스를 필요로 하는 관계를 말합니다. 예를 들어 BoardController가 게시글 기능을 처리하기 위해 BoardService를 사용한다면, BoardController는 BoardService에 의존한다고 말할 수 있습니다.Board..