- 빈 정의를 통해 생성된 빈에게 의존성과 설정 값을 제어할 수 있을 뿐만 아니라, 객체의 생명 주기도 제어할 수 있습니다.
- 다양한 범위에서 객체를 생성할 수 있습니다.
1. The Singleton Scope (Default)
- 컨테이너당 하나의 인스턴스만 생성합니다.
- 캐시에 저장됩니다.
- 각 IoC Container 들은 이 캐시된 객체를 반환합니다.
- 싱글톤 빈에 대한 모든 요청은 항상 동일한 공유 인스턴스를 반환합니다.
<bean id="accountService" class="com.something.DefaultAccountService"/>
<!-- the following is equivalent, though redundant (singleton scope is the default) -->
<bean id="accountService" class="com.something.DefaultAccountService" scope="singleton"/>
2. The Prototype Scope
항목 | 설명 |
정의 | 요청마다 새로운 빈 인스턴스가 생성되는 스코프 |
생성 시점 | getBean() 호출 또는 의존성 주입 시마다 새 인스턴스 생성 |
사용 예 | 상태를 가지는 객체 또는 매번 다른 상태가 필요한 빈 |
생명 주기 관리 | Spring이 초기화까지만 관리하고, 그 이후는 개발자 책임 |
파괴 콜백 | 호출되지 않음 (Spring이 관리하지 않음) |
자원 해제 | 프로토타입 빈이 가진 자원은 클라이언트가 수동으로 해제해야 함 |
DI 시 동작 | 다른 빈에 주입될 때도 항상 새로운 인스턴스가 생성됨 |
<bean id="accountService" class="com.something.DefaultAccountService" scope="prototype"/>
3. Singleton Beans with Prototype-bean Dependencies
- 프로토타입 빈을 의존하는 싱글톤 빈을 사용할 경우, 프로토타입 빈은 초기화 중에 주입됩니다.
- 싱글톤 빈이 런타임에 프로토타입 빈의 새 인스턴스를 얻고 싶다면 수정자 주입 등의 방법을 사용해야 합니다.
출처
'Spring > Spring' 카테고리의 다른 글
[Spring][Core] 2-6. Bean: Autowiring Collaborators (0) | 2023.10.14 |
---|---|
[Spring][Core] 2-5. Bean: Dependency Injection (0) | 2023.10.14 |
[Spring][Core] 2-2. Bean: Naming (0) | 2023.10.14 |
[Spring][Core] 2-3. Bean: Instantiating (0) | 2023.10.14 |
[Spring][Core] 2-1. Bean: Definition (1) | 2023.10.14 |