7.4. 관리 빈
Jakarta EE는 Jakarta Managed Beans 사양에 공통 정의를 설정합니다. Jakarta EE의 경우 관리 빈은 최소한의 프로그래밍 제한으로 컨테이너 관리 개체로 정의됩니다. 그렇지 않으면 약어 POJO(Plain Old Java Object)에서 알 수 있습니다. 리소스 주입, 라이프사이클 콜백 및 인터셉터와 같은 소규모 기본 서비스 세트를 지원합니다. Jakarta Enterprise Beans 및 Jakarta Contexts and Dependency Injection과 같은 병행 사양은 이 기본 모델을 기반으로 합니다.
단, 매개 변수가 없는 생성자가 있는 거의 모든 구체적인 Java 클래스 또는 주석 @Inject 로 지정된 생성자가 빈입니다. 여기에는 모든 JavaBean과 모든 Jakarta Enterprise Beans 세션 빈이 포함됩니다.
7.4.1. 빈인 클래스 유형
관리되는 빈은 Java 클래스입니다. Jakarta EE의 경우 관리되는 빈의 기본 라이프사이클 및 의미 체계는 Jakarta Managed Beans 1.0 사양에 의해 정의됩니다. 빈 클래스 @ManagedBean 에 주석을 달아 관리되는 빈을 명시적으로 선언할 수 있지만, 컨텍스트 및 종속성 주입에서는 필요하지 않습니다. 사양에 따라 Contexts 및 Dependency Injection 컨테이너는 다음 조건을 관리되는 빈으로 충족하는 모든 클래스를 처리합니다.
- 정적인 내부 클래스가 아닙니다.
-
구체적인 클래스이거나
@Decorator로 주석이 추가됩니다. -
Jakarta Enterprise Beans 구성 요소 정의 주석이나
ejb-jar.xml파일에서 Jakarta Enterprise Beans bean 클래스로 선언되지 않습니다. -
javax.enterprise.inject.spi.Extension인터페이스를 구현하지 않습니다. -
매개 변수가 없는 생성자 또는
@Inject로 주석이 있는 생성자가 있습니다. -
@Vetoed 또는 @Vetoed로 주석이 추가된 패키지에 주석이추가되지않습니다.
관리 빈 유형의 무제한 빈 세트에는 빈 클래스, 모든 슈퍼 클래스 및 직접 또는 간접적으로 구현하는 모든 인터페이스가 포함되어 있습니다.
관리 빈에 공용 필드가 있는 경우 기본 범위 @Dependent 가 있어야 합니다.
@Vetoed
이 클래스에서 정의한 빈 또는 관찰자 방법이 설치되지 않도록 클래스를veto 처리할 수 있습니다.
@Vetoed
public class SimpleGreeting implements Greeting {
...
}
이 코드에서 SimpleGreeting 빈은 주입을 위해 고려되지 않습니다.
패키지의 모든 빈은 주입되지 않도록 할 수 있습니다.
@Vetoed package org.sample.beans; import javax.enterprise.inject.Vetoed;
org.sample 에 있는 이 코드는 이 패키지 내의 모든 빈이 삽입되지 않도록 합니다.
.beans 패키지의 package-info. java
상태 비저장 Jakarta Enterprise Beans 또는 Jakarta RESTful Web Services 리소스 엔드포인트와 같은 자카르타 EE 구성 요소는 @Vetoed 로 표시되어 빈으로 간주되지 않도록 할 수 있습니다. @Vetoed 주석을 모든 영구 엔터티에 추가하면 BeanManager 가 엔터티를 Jakarta Contexts 및 Dependency Injection Bean으로 관리할 수 없습니다. 엔터티에 @Vetoed 주석이 추가되면 주입이 수행되지 않습니다. 이를 뒷받침하는 이유는 BeanManager 가 Jakarta Persistence 공급자가 중단될 수 있는 작업을 수행하지 못하도록 하기 때문입니다.