반응형
답변
스프링 빈(Spring Bean)은 스프링 IoC(Inversion of Control) 컨테이너에 의해 생성되고 관리되는 객체를 의미합니다. 스프링 애플리케이션에서 빈은 애플리케이션의 구성 요소를 나타내며, 스프링 컨테이너는 이러한 빈의 생성, 초기화, 사용, 소멸의 전 과정을 관리합니다. 빈은 스프링의 핵심 요소로, 애플리케이션의 비즈니스 로직을 구성하는 데 사용됩니다.
스프링 컨테이너는 애플리케이션 시작 시 빈을 인스턴스화하고, 필요한 의존성을 주입하여 초기화한 후, 애플리케이션이 종료될 때 빈의 소멸 메서드를 호출하여 자원을 정리합니다. 빈은 싱글톤, 프로토타입 등 다양한 스코프를 가질 수 있으며, 각 스코프에 따라 생성과 사용 방식이 달라집니다. 이 과정을 통해 스프링은 빈의 생명 주기를 관리하며, 코드의 결합도를 낮추고 유지보수성을 높입니다.
추가 정보
스프링 컨테이너가 빈을 관리하는 과정
- 빈 정의(Bean Definition):
- 빈은 XML 파일, 애노테이션, 또는 자바 설정 클래스를 통해 정의됩니다. 빈 정의에는 클래스, 스코프(예: 싱글톤, 프로토타입), 초기화 메서드, 소멸 메서드 등이 포함됩니다.
- 빈 인스턴스화(Instantiation):
- 스프링 컨테이너가 애플리케이션을 시작할 때, 빈의 정의에 따라 빈을 인스턴스화합니다. 스프링은 기본적으로 싱글톤 스코프를 사용하여 빈을 한 번만 생성하고, 이후에는 동일한 인스턴스를 반환합니다. 하지만 프로토타입 스코프를 사용할 경우, 빈이 요청될 때마다 새로운 인스턴스가 생성됩니다.
- 의존성 주입(Dependency Injection):
- 빈이 인스턴스화된 후, 스프링 컨테이너는 빈의 의존성을 주입합니다. 이는 빈이 필요로 하는 다른 빈을 주입하는 과정입니다. 의존성 주입은 생성자 주입, 세터 주입, 필드 주입 등 다양한 방식으로 이루어질 수 있습니다.
- 빈 초기화(Initialization):
- 의존성 주입이 완료된 후, 스프링 컨테이너는 빈의 초기화 메서드를 호출합니다. 이 과정에서 커스텀 초기화 로직을 포함할 수 있으며, 초기화 메서드는 빈이 사용되기 전에 수행됩니다. 예를 들어, @PostConstruct 애노테이션을 사용하여 초기화 메서드를 지정할 수 있습니다.
- 빈 사용(Usage):
- 빈이 초기화되면 애플리케이션의 다른 부분에서 빈을 사용할 수 있습니다. 스프링 컨테이너는 빈의 생명 주기를 관리하며, 빈을 필요로 하는 곳에 제공됩니다.
- 빈 소멸(Destruction):
- 애플리케이션이 종료되거나, 빈이 더 이상 필요하지 않게 되면, 스프링 컨테이너는 빈의 소멸 메서드를 호출하여 자원을 정리합니다. @PreDestroy 애노테이션을 사용하여 소멸 메서드를 정의할 수 있습니다.
스프링 빈의 스코프(Bean Scope)
스프링에서 빈의 스코프는 빈이 생성되고 사용되는 방식에 대한 범위를 정의합니다. 스프링은 기본적으로 다섯 가지 스코프를 제공합니다.
- 싱글톤(Singleton): 애플리케이션 컨텍스트당 하나의 인스턴스만 생성되어 재사용됩니다.
- 프로토타입(Prototype): 요청될 때마다 새로운 인스턴스가 생성됩니다.
- 리퀘스트(Request): 웹 애플리케이션에서 HTTP 요청당 하나의 인스턴스가 생성됩니다.
- 세션(Session): 웹 애플리케이션에서 HTTP 세션당 하나의 인스턴스가 생성됩니다.
- 글로벌 세션(Global Session): 포털 애플리케이션에서 사용되며, 전체 세션 범위에서 하나의 인스턴스가 생성됩니다.
반응형
'Backend' 카테고리의 다른 글
브라우저에서 구글에 접속했을때 일어나는 일? (0) | 2024.09.01 |
---|---|
Backend(Spring) 면접 전 체크할 기본질문 10가지 (1) | 2024.08.17 |
AOP(Aspect-Oriented Programming)이란 무엇이며, 스프링에서 AOP를 어떻게 활용할 수 있는가? (0) | 2024.08.15 |
스프링의 의존성 주입(Dependency Injection)이란 무엇이며, 어떤 방식으로 구현할 수 있는가? (0) | 2024.08.15 |
러스트로 서비스를 개발하는 것은 어떠한가? (0) | 2024.08.15 |