scope

김희영·2025년 9월 17일

spring

목록 보기
7/26

scope : 빈이 유지 되는 범위

1. 싱글톤 (기본값, @Scope("singleton"))

생성 시점: 애플리케이션 실행 시 (컨테이너 초기화 때)

유지 범위: 애플리케이션 전체 동안 하나만 유지

모든 요청, 세션에서 같은 인스턴스를 공유

보통 서비스, 레포지토리 빈을 이렇게 둠

@Service
public class UserService {
// 애플리케이션 내내 같은 객체
}

2. 프로토타입 (@Scope("prototype"))

생성 시점: 매번 요청할 때마다 새로 생성

유지 범위: 컨테이너가 만들어주고, 이후에는 더 이상 관리하지 않음

매번 새로운 인스턴스가 필요할 때 사용 (잘 쓰이지 않음)

@Component
@Scope("prototype")
public class TempBean {
// 매번 getBean() 할 때마다 새로운 객체
}

3. 리퀘스트 (@Scope("request"))

생성 시점: HTTP 요청이 들어올 때

유지 범위: 요청(Request)이 끝날 때까지

웹 애플리케이션에서만 동작

컨트롤러, 요청 단위 상태 유지할 때 사용

@Component
@Scope("request")
public class RequestBean {
// 요청 하나마다 독립적으로 존재
}

4. 세션 (@Scope("session"))

생성 시점: HTTP 세션이 시작될 때

유지 범위: 세션이 유지되는 동안

로그인 같은 사용자별 상태를 저장할 때 사용

@Component
@Scope("session")
public class SessionBean {
// 같은 브라우저 세션 동안 공유됨
}

5. 애플리케이션 (@Scope("application"))

생성 시점: 애플리케이션 시작 시

유지 범위: 애플리케이션 컨텍스트(ServletContext) 살아있는 동안

사실상 싱글톤과 거의 같지만, 웹 컨텍스트 기준이라 구분됨

profile
내는 반드시 개발자가 되고 말것어

0개의 댓글