type
status
date
slug
summary
tags
category
icon
password
정의
스프링 IoC에서 인스턴스화 하고 조립 및 구성, 관리하는 객체
즉, 스프링 IoC 컨테이너에 의해 관리되는 자바 객체
Spring IoC Container
프로그램의 실행 흐름이나 객체의 생명 주기를 개발자가 제어하는 것이 아닌 외부에서 관리해주는 것
Container는 아래의 메타데이터로 작성할 수 있음
- XML
- Java Config
- Componenet Scan
XML
Java Config
Componenet Scan
Bean Scope
객체의 인스턴스가 오직 1개만 생성되는 것을 보장하는 디자인 패턴
종류
- request
- HTTP 요청이 들어오고 나갈 때까지 유지되는 스코프로 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고 관리됨
- session
- HTTP 세션과 동일한 생명주기를 가지는 스코프
- application
- 서블릿 컨텍스트와 동일한 생명 주기를 가지는 스코프
- websocket
- 웹 소켓과 동일한 생명 주기를 가지는 스코프
Default Scope
따로 설정해둔 것이 없으면 빈이 싱글톤의 범위로 등록

주의점
- 객체의 상태를 유지하게 설계하면 안됨. → stateless 해야 함
- 특정 클라이언트에 의존적이거나 값을 변경할 수 있는 필드가 있으면 안됨
- 가급적 읽기만 허용
Prototype Scope
stateful한 빈을 생성할 수 있음
클라이언트가 스프링 빈을 요구할 때마다 빈 생성, 의존성 주입, 반환을 수행함
