CDI(Contexts and Dependency Injection)
JBoss Weld를 기반으로 하는 JSR 346 구현인 Java™ EE 플랫폼을 위한 CDI(Contexts and Dependency Injection) 1.2에 대해 공부하십시오.
CDI는 해당 모듈 내의 beans.xml 파일의 존재에 의해서
또는 JSR 346 스펙에서
정의되는 Bean 정의 어노테이션에 의해 애플리케이션에서 활성화됩니다. 웹 아카이브(WAR)의
WEB-INF 디렉토리 또는 다른 유형의 아카이브의 META-INF 디렉토리에서 beans.xml
파일을 찾을 수 있습니다. 활성화되면
컨테이너는 다음과 같은 서비스를 제공합니다.
- 컨텍스트 관리
- Type-safe 종속성 인젝션: CDI-관리 Bean은 필요에 따라 초기화되며 삽입됩니다.
- 데코레이터, 하나 이상의 Bean 인터페이스를 구현하고 비즈니스 로직을 포함할 수 있습니다. 기본적으로 데코레이터가 사용 안함으로 설정됩니다. Bean당 복수의 데코레이터를 가질 수 있으며 순서는 beans.xml 파일에 의해 정의됩니다. 데코레이터를 사용으로 설정하려면 beans.xml 또는 @Priority를 사용하십시오.
- 인터셉터 바인딩: beans.xml 파일에서 수동으로 사용 설정되거나 @Priority를 사용하여 글로벌하게 사용 설정되는 인터셉터는 인터셉터 바인딩 유형을 사용하여 바인드됩니다.
- 이벤트 모델
- EL(Expression Language)을 사용하는 JSF(JavaServer Face) 및 JSP(JavaServer Pages) 파일로 통합
- 인터셉터의 인젝션 및 사용을 지원하는 JavaEE 컴포넌트 클래스
JSR 299와 JSR 330용 스펙 관련 API 클래스 및 Apache OpenWebBeans를 기반으로 하는 IBM® 수정된 구현 클래스는 애플리케이션 서버 런타임 환경으로 패키지됩니다.
제품 CDI 구현이 Apache OpenWebBeans를 바탕으로 하더라도, 다음 변경 및 추가사항이
서버 런타임과의 통합을 지원하기 위해 OpenWebBeans에 추가됩니다.
- 인젝션 가능한 컴포넌트를 지원하는 WebSphere® Application Server Traditional에 있는 다른 Java EE(Java Platform, Enterprise Edition) 컨테이너와의 통합.
- WebSphere Application Server Traditional 바이트 코드 스캐너를 사용하는 ScannerService 구현.
- EJB 유형 판별을 위한 제품 EJB(Enterprise JavaBeans) 메타데이터의 직접 사용.
- 더 이상 각 애플리케이션에 의해 추가될 필요가 없는 CDI 애플리케이션에 대한 서블릿 리스너, 필터, 인터셉터의 자동 등록.
- 많은 OpenWebBeans SPI(Service Programming Interfaces)의 제품 특정 구현(예: ResourceInjectionService, TransactionService 및 장애 복구 서비스).
중요사항: 컨테이너 관리 트랜잭션 및 보안은 CDI에서 제공되지 않습니다.
