beans.xml 파일이 없을 때 CDI에서 내재적 Bean에 대해 스캔

CDI(Contexts and Dependency Injection) 1.1 스펙에서 내재적 Bean 검색 모드가 도입되었으며 그 결과 WebSphere Application Server의 Java EE(Java Platform, Enterprise Edition) 6 CDI 1.0 구현에서와 다르게 동작 및 성능이 변경되었습니다.

이 규칙은 프로젝트에 beans.xml 파일이 없는 경우 WEB-INF 또는 META-INF 폴더에 플래그를 지정합니다. Java EE 6 CDI 1.0에서 Java EE 7 CDI 1.1 이상으로 이동하는 경우, 내재적 Bean 검색으로 인해 런타임이 모든 WAR 및 JAR 파일을 스캔합니다(beans.xml 파일이 없는 WAR 및 JAR 파일도 포함). 이로 인해 다음을 사용하는 경우 Bean 발견 성능이 저하될 수 있습니다. cdi-1.2 Liberty의 기능.

Java EE 7에서는 beans.xml 파일이 정의되어 있지 않는 경우 런타임이 자동으로 Bean 정의 어노테이션에 대해 스캔합니다. 이 동작을 사용하지 않으려면 다음 예제에 설명된 바와 같이 Bean 검색 모드가 none으로 설정된 beans.xml 파일을 추가하십시오.


<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="none" version="1.1">
</beans>

Liberty에서도 다음 특성을 server.xml 파일에 추가하여 이 동작을 사용 안하므로 설정할 수 있습니다.


<cdi12 enableImplicitBeanArchives="false"/>

WebSphere Application Server Traditional에서는 이 동작을 다음 방법으로 사용 안함으로 설정할 수 있습니다.

WebSphere Traditional에서 이러한 특성을 설정하는 방법에 대한 자세한 정보는 Custom Properties for improving application startup in WebSphere Application Server 문서를 참조하십시오.

Java EE 7 CDI 1.2 구현에 대한 자세한 정보는 Contexts and Dependency Injection 1.2 동작 변경사항을 참조하십시오.