7.2.2. 검사 프로세스에서 빈 제외
제외 필터는 bean 아카이브의 <exclude> 요소에서 <scan> 요소의 하위 항목으로 정의합니다. 기본적으로 제외 필터는 활성 상태입니다. 제외 필터는 해당 정의에 다음이 포함된 경우 비활성 상태가 됩니다.
-
name속성이 있는<if-class-available>이라는 하위 요소와 빈 아카이브의 클래스 로더는 해당 이름의 클래스를 로드할 수 없습니다. -
name속성이 있는<if-class-not-available>이라는 하위 요소와 빈 아카이브의 클래스 로더는 해당 이름의 클래스를 로드할 수 있습니다. -
name속성이 있는<if-system-property>라는 하위 요소와 해당 이름에 대해 정의된 시스템 속성이 없습니다. -
name특성과 value 속성이 있는<if-system-property>라는 하위 요소와 해당 값이 있는 해당 이름에 대해 정의된 시스템 속성이 없습니다.
유형은 검색에서 제외되고 필터가 활성 상태인 경우 다음을 제외합니다.
- 검색 중인 유형의 정규화된 이름은 exclude 필터의 name 속성 값과 일치합니다.
- 검색 중인 유형의 패키지 이름은 exclude 필터의 접미사 ".*"가 포함된 name 속성의 값과 일치합니다.
- 검색 중인 유형의 패키지 이름은 exclude 필터의 접미사 ".**"가 있는 name 속성의 값으로 시작합니다.
예 7.1. 예: beans.xml 파일
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee">
<scan>
<exclude name="com.acme.rest.*" /> 1
<exclude name="com.acme.faces.**"> 2
<if-class-not-available name="javax.faces.context.FacesContext"/>
</exclude>
<exclude name="com.acme.verbose.*"> 3
<if-system-property name="verbosity" value="low"/>
</exclude>
<exclude name="com.acme.ejb.**"> 4
<if-class-available name="javax.enterprise.inject.Model"/>
<if-system-property name="exclude-ejbs"/>
</exclude>
</scan>
</beans>- 1
- 첫 번째 제외 필터는
com.acme.rest패키지의 모든 클래스를 제외합니다. - 2
- 두 번째 제외 필터는
com.acme.faces패키지의 모든 클래스와 하위 패키지를 제외하지만 Jakarta Server Faces를 사용할 수 없는 경우에만 가능합니다. - 3
- 세 번째 제외 필터는 시스템 속성
세부 정보 표시값이낮으면com.acme.verbose패키지의 모든 클래스를 제외합니다. - 4
- 네 번째 제외 필터는
com.acme.ejb패키지의 모든 클래스를 제외하며, 시스템 속성exclude-ejbs가 임의의 값으로 설정되어 있고 동시에javax.enterprise.inject.Model클래스를 classloader에서 사용할 수 있는 경우 모든 하위 패키지가 제외됩니다.
참고
Jakarta EE 구성 요소에 @Vetoed 를 추가하여 빈으로 간주되는 것을 방지하는 것이 안전합니다. @Vetoed로 주석이 추가된 모든 유형 또는 @Vetoed 로 주석이 추가된 패키지에 대해 이벤트가 실행되지 않습니다 . 자세한 내용은 @Vetoed를 참조하십시오.