본문 바로가기

코딩/JAVA 공부

[Spring] 빈 스코프

빈 스코프란?

빈이 존재할 수 있는 범위.

 

스프링 빈이 기본적으로 싱글톤 스코프로 생성된다.

 

싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지

프로토타입 : 빈의 생성과 의존관계 주입까지만 관여하고 이후엔 관리 X

웹 관련 스코프 - request : 웹 요청이 들어오고 나갈때 까지 유지

                       - session : 웹 세션이 생성되고 종료될 떄 까지 유지

                        - application : 웹의 서블릿 컨텍스와 같은 범위로 유지

설정방법은 아래와 같다

@Scope("prototype")
@Component
public class ScopeExample{}

// 수동 등록
@Scope("prototype")
@Component
ScopeExample scpoeBean() {
	return new ScopeExample();
}

 

* 프로토타입 스코프

싱글톤 스코프 (기본값) 은 하나의 인스턴스만 스프링 컨테이너에 들어있는게 보장됬다.

반면 프로토타입 스코프는 조회할 때 마다 항상 새로운 인스턴스를 생성해 반환한다.

스프링 컨테이너는 인스턴스 생성, DI, 초기화 까지 진행 후 클라이언트에 반환. 이후엔 관리하지 않는다

--> @PreDestory 함수가 실행되지 않아 만약 필요하다면 클라이언트가 진행해야 함.