SeamFramework.orgCommunity Documentation
Web Beans (JSR-299) 사양은 애플리케이션을 보다 쉽게 개발하기 위한 Java EE 환경에 대한 서비스 모음을 정의합니다. Web Beans는 JavaBeans 및 Enterprise Java Bean을 포함하여 기존의 Java 구성 요소 유형을 통해 향상된 수명 주기 및 상호 작용 모델을 계층화합니다. 전통적인 Java EE 프로그래밍 모델의 구성 요소로서, Web Beans는 다음과 같은 서비스를 제공합니다:
명확하게 정의된 컨텍스트에 바인딩된 상태 유지 구성 요소의 수명 주기 개선
의존성 주입 (dependency injection)으로의 타입 안정적 (typesafe) 접근
이벤트 통지 기능을 통한 상호작용
데코레이터 (decorator) 라는 새로운 종류의 인터셉터와 함께 인터셉터를 구성요소에 바인딩하기 위해 개선된 접근으로, 비지니스 문제 해결을 위해 보다 적절하게 사용
컨텍스트 수명 주기 관리와 함께 의존성 주입은 다음과 같은 질문을 묻고 대답하는 것에서 생소한 API 사용자를 보호합니다:
이러한 객체의 수명 주기는 무엇입니까?
얼마나 많은 클라이언트가 이를 동시에 갖을 수 있습니까?
이는 멀티스레드됩니까?
어디서 얻을 수 있을까요?
이를 명시적으로 삭제해야 합니까?
직접 사용하지 않을 경우 참조 사항을 어디에 보관해야 합니까?
어떻게 하면 우회 계층을 추가하여, 배치시 이러한 개체 구현을 다르게 할 수 있을까요?
어떻게 하면 다른 개체 사이에서 이러한 개체를 공유할 수 있을까요?
Web Bean은 의존하는 다른 Web Beans의 유형 및 시멘틱 만을 지정합니다. 이는 의존하는 다른 Web Bean 클라이언트 또는 스레딩 모델, 실제적인 수명 주기, 구체적 구현 방식을 인식할 필요가 없습니다. 더 나아가 의존하는 Web Bean의 스레딩 모델, 수명 주기, 구체적 구현 방식은 클라이언트에게 영향을 미치지 않고 운용 방식에 따라 달라질 수 있습니다.
이벤트, 인터셉터 및 데코레이터는 이러한 모델에 내제된 느슨하게 연결하는 (loose-coupling) 기능을 강화합니다:
이벤트 통지는 이벤트 소비자로부터 이벤트 생산자를 연결 해제합니다
인터셉터는 비지니스 로직으로 부터의 기술적 문제를 연결 해제합니다
데코레이터는 비지니스 문제를 구분하게 합니다.
가장 중요하게 Web Beans는 이러한 모든 기능을 타입 안정적 (typesafe) 방식으로 제공합니다. Web Beans는 협력적 객체를 갖추기 위한 방법을 결정하기 위해 문자열 기반의 식별자를 사용하지 않습니다. XML은 옵션으로 남아있어도 거의 사용되지 않습니다. 대신 Web Beans는 바인딩 어노테이션 (binding annotations)이라는 새로운 패턴과 함께 Java 객체 모델에서 이미 사용 가능한 타이핑 정보를 사용하여 Web Beans 및 Web Beans의 의존성, 인터셉터, 데코레이터 및 이벤트 소비자를 함께 묶습니다.
Web Beans 서비스는 일반적으로 Java EE 환경에 있는 다음과 같은 구성 요소의 유형에 적용됩니다:
모든 JavaBeans
모든 EJB
모든 Servlets
Web Beans는 통합 지점을 제공하여 차후 Java EE 사양이나 또는 비표준 프레임워크에 의해 지정된 다른 종류의 구성 요소가 Web Beans과 통합되어 Web Beans 서비스의 장점을 취하고 다른 종류의 Web Bean과 상호 작용합니다.
Web Beans는 Seam, Guice, Spring을 포함하여 다수의 기존 Java 프레임워크에 의해 영향을 받았지만 Web Beans은 자체적으로 다음과 같은 고유한 기능을 소유하고 있습니다: Seam 보다 더 타입 안정적, 보다 더 상태 기반적, Spring 보다 덜 XML-중심, Guice 보다 더 웹 및 엔터프라이즈-애플리케이션 사용 가능
보다 중요하게 Web Beans는 Java EE 및 내장 가능한 EJB Lite를 사용할 수 있는 Java SE 환경과 통합된 JCP 표준입니다.