296.2.4. <packageScan> の使用
Camel 2.0 では、これは、パス一致のような Ant を使用した検出されたルートクラスの選択的包含および除外を可能にするために拡張されました。Spring では、これは <packageScan/> タグを追加して指定されます。タグには 1 つ以上の 'package' 要素が含まれる必要があり(1.x と同様に)、任意で 1 つ以上の「includes」または「excludes」要素で、検出されたクラスの完全修飾名に適用するパターンを指定します。以下に例を示します。
<camelContext xmlns="http://camel.apache.org/schema/spring"> <packageScan> <package>org.example.routes</package> <excludes>**.*Excluded*</excludes> <includes>**.*</includes> </packageScan> </camelContext>
除外パターンは、包含パターンの前に適用されます。include パターンまたは exclude パターンが定義されていない場合は、パッケージで検出されるすべての Route クラスが返されます。
上記の例では、Camel はすべての 'org.example.routes' パッケージと RouteBuilder クラスのすべてのサブパッケージをスキャンします。スキャンで、'MyRoute" と呼ばれる org.example.routes と、サブパッケージ 'excluded' の別の 'MyExcludedRoute' の 2 つの RouteBuilder が見つかるとします。各クラスの完全修飾名(org.example.routes.MyRoute、org.example.routes.excluded.MyExcludedRoute)が適用され、include パターンおよび exclude パターンが適用されます。
除外パターン *.*Excluded は fqcn 'org.example.routes.excluded.MyExcludedRoute' と初期化から camel に一致させます。
ここでは、これは以下のように 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
*.??clude ded は org.simple.IncludedRoute, org.simple.Excluded match org.simple.PrecludedRoute と一致します。