🧐강의🧐
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard
- 스프링 빈은 스프링 컨테이너의 시작부터 종료까지 유지된다
- ∵ 스프링 빈 → 싱글톤 스코프 (기본)
- 스코프 : 빈이 존재할 수 있는 범위
💡스프링이 지원하는 스코프
1. 싱글톤
✅ 기본 스코프
✅ 스프링의 시작부터 종료까지 유지되는 가장 넓은 범위의 스코프
✅ 빈 조회 시, 항상 같은 인스턴스의 스프링 빈 반환
· 싱글톤 빈 요청 시, 동작 방식
2. 프로토타입
✅ 프로토타입 빈의 생성과 의존 관계 주입까지 스프링 컨테이너가 관여하는 매우 짧은 범위의 스코프 (+ 초기화)
✅ 빈 조회 시, 항상 새로운 인스턴스 스프링 빈 생성 후 반환
✅ 클라이언트가 빈을 관리하기 때문에, 스프링 컨테이너는 @PreDestroy 같은 종료 메서드 호출 X
· 프로토타입 빈 요청 시, 동작 방식
3. 웹 관련
✅ 웹 환경에서만 동작
✅ 스프링의 시작부터 종료까지 유지 → 종료 메서드 호출
☑️ Request : 웹 요청 생성부터 종료까지 유지되는 스코프
☑️ Session : 웹 세션 생성부터 종료까지 유지되는 스코프
☑️ Application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프
☑️ WebSocket : 웹 소켓과 같은 범위로 유지되는 스코프
· request scope 동작 방식
1. 클라이언트 A 요청 → HTTP request 에 따른 객체 할당 (A 전용)
2. 같은 HTTP request 요청 시, 만들어 두었던 객체 반환
3. 클라이언트 B 요청 → HTTP request 에 따른 객체 할당 (B 전용)
💡빈 스코프 지정하는 방법
1. 컴포넌트 스캔 자동 등록
@Scope("prototype")
2. 수동 등록
@Scope("prototype")
@Bean
PrototypeBean HelloBean() {
return new HelloBean();
}
'Spring > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
[빈 스코프] 웹 스코프 request 예제 만들기 (0) | 2024.01.03 |
---|---|
[빈 스코프] 싱글톤 스코프 빈 & 프로토타입 스코프 빈 조회하기 (0) | 2024.01.02 |
[빈 생명주기 콜백] 스프링 빈 생명주기 콜백 지원하는 방법 3가지 - 인터페이스, 설정 정보, 애노테이션 (0) | 2023.12.29 |
[의존 관계 자동 주입] 해당 타입의 스프링 빈 모두 조회 - List & Map (0) | 2023.12.26 |
[의존 관계 자동 주입] @Qualifer 타입 체크 문제 해결하기 - 애노테이션 직접 생성 (0) | 2023.12.25 |