315.2.4. 使用 <packageScan>


在 Camel 2.0 中,这个问题已被解决,允许使用 Ant (如路径匹配)有选择性包含和排除发现的路由类。在 spring 中,这通过添加 <packageScan/> 标签来指定。标签必须包含一个或多个 'package' 元素(类似于 1.x),以及可选的一个或多个 'includes' 元素,指定要应用到所发现类的完全限定域名的模式。例如:

  <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 类的任何子软件包。说明扫描会找到两个 RouteBuilders,一个位于 org.example.routes 中名为"MyRoute",另一个名为"MyExcludedRoute" (子软件包")。提取每个类的完全限定名称(org.example.routes.MyRoute, org.example.routes.excluded.MyExcludedRoute),同时应用 include 和 exclude 模式。

exclude pattern *.*Excluded 将与 fqcn 'org.example.routes.excluded.MyExcludedRoute' 和 veto 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

*.?cluded 将与 org.simple.IncludedRoute 和 org.simple.ExcludedRoute 匹配 org.simple.PrecludedRoute

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.