SeamFramework.orgCommunity Documentation

10장. 스테레오타입 (Stereotypes)

10.1. 스테레오타입에 대한 기본값 범위 및 배치 유형
10.2. 스테레오타입으로 범위 및 유형 제한
10.3. 스테레오타입 용 인터셉터 바인딩
10.4. 스테레오타입과 함께 이름을 기본값으로 지정
10.5. 표준 스테레오타입

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 {}

이제 LoginActionloginAction이라는 이름을 갖게 됩니다.

Web Beans 사양에 의해 정의된 두가지 표준 스테레오타입 @Interceptor@Decorator를 살펴보았습니다.

Web Beans는 하나 이상의 표준 스테레오타입을 정의합니다:

@Named 

@RequestScoped 
@Stereotype 
@Target({TYPE, METHOD}) 
@Retention(RUNTIME) 
public @interface Model {} 

이러한 스테레오타입은 JSF와 함께 사용하기 위한 것입니다. JSF 관리 beans을 사용하지 않고 Web Bean @Model을 어노테이션하여 이를 직접 JSF 페이지에서 사용합니다.