6.2. 模块依赖项


模块依赖项是声明,一个模块需要一个或多个其他模块的类才能正常工作。当 JBoss EAP 加载模块时,模块类加载程序会解析该模块的依赖项,并将每个依赖项中的类添加到其类路径中。如果无法找到指定的依赖项,则模块将无法加载。

注意

有关 模块和模块 类加载系统的完整详情,请参阅 模块部分。

部署的应用程序(例如 JAR 或 WAR)被加载为动态模块,并使用依赖项来访问 JBoss EAP 提供的 API。

有两种类型的依赖项: 显式隐式

显式依赖项
开发人员在配置文件中声明了显式依赖项。静态模块可以在其 module.xml 文件中声明依赖项。动态模块可以在部署的 MANIFEST.MFjboss-deployment-structure.xml 部署描述符中声明依赖项。
隐式依赖项

当部署中存在特定条件或 meta-data 时,JBoss EAP 会自动添加隐式依赖项。JBoss EAP 提供的 Java EE 7 API 是通过检测部署中隐式依赖项来添加的模块示例。

也可以将部署配置为使用 jboss-deployment-structure.xml 部署描述符文件来排除特定的隐式依赖项。当应用程序捆绑一个特定版本的 JBoss EAP 将尝试作为隐式依赖项添加的库时,这很有用。

可选依赖项

显式依赖项可以指定为可选。加载可选依赖项失败将导致模块无法加载。但是,如果依赖项在以后可用,它不会 添加到模块的类路径中。加载模块时,依赖项必须可用。

导出依赖

模块的类路径仅包含自己的类,以及其即时依赖项。模块无法访问其其中一个依赖项的依赖关系类。但是,模块可以指定要导出显式依赖项。导出的依赖项提供给依赖于导出它的模块的任何模块。

例如,模块 A 依赖于模块 B,模块 B 依赖于模块 C。模块 A 可以访问模块 B 的类,模块 B 可以访问模块 C 类。模块 A 无法访问模块 C 类,除非:

  • 模块 A 声明对模块 C 的明确依赖,或者
  • 模块 B 导出其对模块 C 的依赖项。

全局模块

全局模块是 JBoss EAP 作为各个应用的依赖项的模块。通过将任何模块添加到 JBoss EAP 的全球模块列表,即可成为全局模块。它不需要对模块进行更改。

详情请参阅 定义全局模块 部分。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.