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를 참조하십시오.