SeamFramework.orgCommunity Documentation
Web Beans 사양에 따라:
여러 시스템에서, 아키텍처 패턴을 사용하여 Web Bean 역할을 반복하는 모음을 생산합니다. 스테레오타입은 프레임워크 개발자가 이러한 역할을 인식하고 중앙 위치에서의 역할과 함께 Web Beans의 일반적인 메타데이터를 명시하게 합니다.
스테레오타입은 다음의 조합을 캡슐화합니다:
기본값 배치 유형
기본값 범위 유형
Web Bean 범위에서의 제한,
특정 유형을 Web Bean이 구현하거나 확장하기 위한 요구 사항
인터셉터 바인딩 어노테이션 모음
스테레오타입은 스테레오타입이 있는 모든 Web Beans이 Web Bean 이름을 기본값으로 하도록 지정할 수 도 있습니다.
Web Bean은 0 또는 하나 이상의 스테레오타입을 명시할 있습니다.
스테레오타입은 Java 어노테이션 유형입니다. 이러한 스테레오타입은 일부 MVC 프레임워크에서 작업 클래스를 인식합니다:
@Retention(RUNTIME)
@Target(TYPE)
@Stereotype
public @interface Action {}
Web Bean에 어노테이션을 적용하여 스테레오타입을 사용합니다.
@Action
public class LoginAction { ... }
스테레오타입은 해당 스테레오타입과 함께 Web Beans의 기본값 범위 또는 기본값 배치 유형을 지정할 수 있습니다. 예를 들어, @WebTier
배치 유형이 시스템이 웹 애플리케이션으로 실행될 때만 Web Beans이 배치됨을 인식할 경우, 각각의 작업 클래스에 대해 다음과 같은 기본값을 지정할 수 있습니다:
@Retention(RUNTIME)
@Target(TYPE)
@RequestScoped
@WebTier
@Stereotype
public @interface Action {}
물론 특정 작업은 필요할 경우 이러한 기본값을 덮어쓰기할 수 있습니다:
@Dependent @Mock @Action
public class MockLoginAction { ... }
모든 작업을 특정 범위로 강제시키고자 할 경우, 강제시킬 수 있습니다.
어떤 작업이 특정 범위를 명시하지 못하게 하길 원한다고 가정합니다. Web Beans는 특정 스테레오타입과 함께 Web Beans의 허용 범위 모음을 명시적으로 지정할 수 있게 합니다. 예:
@Retention(RUNTIME)
@Target(TYPE)
@RequestScoped
@WebTier
@Stereotype(supportedScopes=RequestScoped.class)
public @interface Action {}
특정 작업 클래스가 Web Beans 요청 범위 외의 범위를 지정하려고 할 경우, 초기화시 예외 처리가 Web Bean 관리자에 의해 넘어가게 됩니다.
특정 스테레오타입과 함께 모든 Web Bean을 강제하여 인터페이스를 구현하거나 클래스를 확장할 수 있습니다:
@Retention(RUNTIME)
@Target(TYPE)
@RequestScoped
@WebTier
@Stereotype(requiredTypes=AbstractAction.class)
public @interface Action {}
특정 작업 클래스가 AbstractAction
클래스를 확장하지 않을 경우, 초기화시 예외 처리가 Web Bean 관리자에 의해 넘어가게 됩니다.
스테레오타입은 스테레오타입과 함께 모든 Web Beans에 의해 상속되기 위해 인터셉터 바인딩 모음을 지정할 수 있습니다.
@Retention(RUNTIME)
@Target(TYPE)
@RequestScoped
@Transactional(requiresNew=true)
@Secure
@WebTier
@Stereotype
public @interface Action {}
이는 비지니스 코드에서 발생할 수 있는 기술적 문제를 발생하지 않게 합니다!
마지막으로 특정 스테레오타입과 함께 모든 Web Beans가 Web Bean 관리자에 의해 기본값으된 Web Bean 이름을 갖도록 지정할 수 있습니다. 작업은 JSP 페이지에서 참조할 수 있어, 이러한 기능을 완벽하게 사용할 수 있는 경우라 할 수 있습니다. 필요한 작업은 빈 @Named
어노테이션을 추가하는 것입니다:
@Retention(RUNTIME)
@Target(TYPE)
@RequestScoped
@Transactional(requiresNew=true)
@Secure
@Named
@WebTier
@Stereotype
public @interface Action {}
이제 LoginAction
은 loginAction
이라는 이름을 갖게 됩니다.
Web Beans 사양에 의해 정의된 두가지 표준 스테레오타입 @Interceptor
및 @Decorator
를 살펴보았습니다.
Web Beans는 하나 이상의 표준 스테레오타입을 정의합니다:
@Named
@RequestScoped
@Stereotype
@Target({TYPE, METHOD})
@Retention(RUNTIME)
public @interface Model {}
이러한 스테레오타입은 JSF와 함께 사용하기 위한 것입니다. JSF 관리 beans을 사용하지 않고 Web Bean @Model
을 어노테이션하여 이를 직접 JSF 페이지에서 사용합니다.