공부/JSF2014. 10. 6. 09:04

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
Posted by #HanaLee