315.2.4. 사용

Camel 2.0에서는 경로 일치와 같은 Ant를 사용하여 발견된 경로 클래스를 선택하고 제외할 수 있도록 이 기능이 확장되었습니다. Spring에서는 <packageScan/> 태그를 추가하여 지정합니다. 태그에는 하나 이상의 '패키지' 요소(즉, 1.x와 유사)가 포함되어야 하며, 선택적으로 검색된 클래스의 정규화된 이름에 적용할 패턴을 지정하는 하나 이상의 'includes' 또는 'excludes' 요소가 포함되어야 합니다.

  <camelContext xmlns="http://camel.apache.org/schema/spring">
    <packageScan>
      <package>org.example.routes</package>
      <excludes>**.*Excluded*</excludes>
      <includes>**.*</includes>
    </packageScan>
  </camelContext>

제외 패턴은 포함 패턴보다 먼저 적용됩니다. 포함 또는 제외 패턴이 정의되지 않은 경우 패키지에서 검색한 모든 Route 클래스가 반환됩니다.

위의 예에서 camel은 모든 'org.example.routes' 패키지와 RouteBuilder 클래스의 하위 패키지를 검색합니다. 검사에서 org.example.routes 두 개를 'MyRoute"라고 하고 하위 패키지 'excludedRoute'의 다른 'MyExcludedRoute'에서 다른 'MyExcludedRoute'를 찾습니다. 각 클래스의 정규화된 이름이 추출되고(org.example.routes.MyRoute, org.example.routes.excluded.MyExcludedRoute) 및 include 및 exclude 패턴이 적용됩니다.

제외 패턴 *.*Excluded 는 fqcn 'org.example.routes.excluded.MyExcludedRoute' 및 veto comel과 일치합니다.

이 항목에서는 다음과 일치하는 Spring의 AntPatternMatcher 구현을 사용합니다.

? matches one character
* matches zero or more characters
** matches zero or more segments of a fully qualified name

예를 들면 다음과 같습니다.

**excluded 는 org.simple.Excluded, org.apache.camel.SomeExcludedRoute 또는 org.example.RouteWhichIsExcluded와 일치합니다.

* ? ?? ?cluded 는 org.simple.IncludedRoute, org.simple.Excluded but match org.simple.PrecludedRoute와 일치합니다.