Managed Bean 스코프
일반적으로 Managed bean 은 아래와 같은 스코프를 가지고 있습니다. 각각의 스코프는 상황에 따라 맞춰서 사용하면 됩니다. 기본값은 request 스코프 입니다. 추후 다루게 될 스프링 프레임워크와 통합을 하게 되면 스프링의 스코프가 적용되며 그때에는 아래의 스코프는 사용되지 않습니다.
- Application (javax.enterprise.context.ApplicationScoped)
- Session (javax.enterprise.context.SessionScoped)
- Flow (javax.faces.flows.FlowScoped)
- Request (javax.enterprise.context.RequestScoped)
- Dependent (javax.enterprise.context.Dependent)
어플리케이션 스코프 (ApplicationScoped)
어플리케이션 스코프는 웹 어플리케이션과 모든 사용자의 상호 작용을 통해 지속 됩니다.
세션 스코프 (SessionScoped)
세션 스코프는 웹 어플리케이션에서 여러 HTTP 요청에 의해 지속됩니다. 일반적인 웹의 세션이 지속되는 동안 유지 됩니다.
플로우 스코프 (FlowScoped)
플로우 스코프는 JSF 2.2 에서 새로 추가된 기능입니다. 플로우 스코프는 웹 어플리케이션의 특정 흐름(flow)과 함께 유저와 상호 작용(interaction)동안 지속됩니다. 플로우 스코프에 대해 더 알아보기
요청(리퀘스트) 스코프 (RequestScoped)
요청(리퀘스트) 스코프는 웹 어플리케이션에서 단일 HTTP 요청 동안 지속 됩니다.
의존 스코프 (Dependent)
의존 스코프는 빈(bean) 이 다른 빈에 의존한다는 것을 의미 합니다.
managed bean 이 다른 managed bean 을 참조 할때 @Dependent 를 사용 할 수 있습니다. 두번째 bean 은 그것이 생성되어 참조의 대상이 될 것으로 예상 될 때에는 스코프(@Dependent)에 있을 수 없습니다. 만약 @Dependent 로 빈이 정의 되면 그 빈은 참조 될때 마다 새로운 인스턴스가 생성되고 어떤 스코프에도 저장이 되지 않습니다.
managed bean 이 컴포넌트 태그의 결합(binding) 속성에 의해 참조 되면 그 빈은 요청 스코프(@RequestScoped) 로 정의 해야 합니다. 만약 빈을 세션 스코프나 어플리케이션 스코프에 배치할 경우 javax.faces.component.UIComponent 인스턴트들은 단일 스레드에 의존적으로 실행 되기 때문 스레드 세이프에 대해 주의 해야 합니다.
만약 빈을 구성 할때 뷰와 관계가 있는 속성(attribute)들이 있으면 뷰 스코프를 사용 할 수 있습니다. 뷰 스코프는 유저가 다음 뷰를 볼때까지 지속됩니다.
출처
'공부 > JSF' 카테고리의 다른 글
JSF 간단 예제 두번째 (0) | 2014.10.07 |
---|---|
JSF 라이프 사이클 상세 (0) | 2014.10.06 |
JSF 라이프 사이클 개요 (0) | 2014.10.05 |
JSF 어플리케이션 Hello World 예제 (0) | 2014.10.04 |
JavaServer Faces 어플리케이션 개발 준비 (0) | 2014.10.04 |