Contexts and Dependency Injection 1.2 동작 변경사항
CDI(Contexts and Dependency Injection) 1.2 구현에는 CDI 1.0에서 마이그레이션된 애플리케이션이 CDI 1.2에서 다르게 동작하거나 실패하도록 만드는 몇 가지 동작 변경사항이 포함되어 있습니다.
동작 변경사항을 고려하여, 각 서버 인스턴스에 대해 CDI 1.0 기능 구현과 CDI 1.2 기능 구현 중 하나를 선택할 수 있습니다. 필요한 동작이 CDI 1.2 기능에만 포함되어 있는 경우에는 CDI 1.2 기능을 사용해야 합니다. CDI 1.2 기능의 동작 변경사항이 기존 애플리케이션에 부정적인 영향을 미치는 경우, CDI 1.0 기능을 사용하면 해당 애플리케이션에 대해 기존 동작이 유지됩니다. CDI 1.0 기능과 CDI 1.2 기능은 서로 호환되지 않으므로 같은 서버에서 이러한 기능을 둘 다 사용할 수는 없습니다. 두 기능을 모두 구성하면 서버에서 구성 오류가 발생합니다.
CDI 1.0 기능은 CDI의 Apache OpenWebBeans 구현으로 빌드되었습니다. CDI 1.2 기능은 CDI의 Weld 구현에서 빌드되었습니다. 작성된 동작 변경사항은 두 구현 간의 차이점 때문입니다.
대화 ID CID
CDI 1.0 구현에서는 CID가 글로벌 범위에서 고유합니다. CDI 1.2에서 이는 각 HTTP 세션마다 고유합니다. 이 동작은 CDI 스펙을 따르는 것이며 Weld에 의해 선택된 규칙입니다. 글로벌 범위에서 고유한 CID를 얻으려면 대화 시작 시에 Conversation.begin을 호출하여 CID를 지정해야 합니다.
beans.xml 파일의 스키마 참조
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
올바르지 않은 스키마를 사용하면 서버에서 예외 오류가 발생합니다.
org.jboss.weld.xml.disableValidating=true JVM 특성을 설정함으로써
beans.xml 파일의 유효성 검증을 끌 수 있으며, 이는 오류의 발생도 방지합니다.
beans.xml 파일이 데코레이터 또는 인터셉터를 지정하는 경우에는
올바른 스키마가 사용되어야 하며, 그렇지 않으면 데코레이터 및 인터셉터가 올바르게 인스턴스화되지 않습니다. 암시적 Bean 아카이브
CDI 1.2 구현은 두 가지의 서로 다른 Bean 아카이브 유형(명시적 및 암시적)을 정의합니다.
- 버전 번호(1.1 이상) 포함, Bean 발견 모드 all 사용
- 버전 번호 없이
- 비어 있는 파일
2.5.1절 "Bean 정의 어노테이션" 또는 하나 이상의 세션 Bean에 정의되어 있는 대로, 암시적 Bean 아카이브는 Bean 정의 어노테이션이 있는 하나 이상의 Bean 클래스가 포함된 기타 아카이브입니다. Java™ EE 플랫폼용 Contexts and Dependency Injection 스펙을 참조하십시오.
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all"
version="1.1">
<cdi12 enableImplicitBeanArchives="false"/>
이 특성을 false로 설정하면 beans.xml 파일이 없는 아카이브가
암시적 Bean 아카이브가 되지 않습니다. 이 특성을 false로 설정하면 시작 시간에 성능이 향상됩니다.