搜索

7.2. 使用上下文和依赖注入来开发应用程序

download PDF

上下文和依赖注入(CDI)在开发应用程序、重用代码、在部署或运行时修改代码以及单元测试方面为您提供巨大的灵活性。

我们ld 为应用程序开发提供了一个特殊模式。启用后,可以使用某些内置工具,协助上下文和依赖注入应用程序的开发。

注意

开发模式不应在生产环境中使用,因为它可能会对应用的性能造成负面影响。在部署到生产环境之前,务必禁用开发模式。

为 Web 应用程序启用开发模式:

对于 web 应用程序,将 servlet 初始化参数 org.jboss.weld.development 设置为 true

<web-app>
    <context-param>
        <param-name>org.jboss.weld.development</param-name>
        <param-value>true</param-value>
    </context-param>
</web-app>

使用管理 CLI 为 JBoss EAP 启用开发模式:

通过将 development-mode 属性设置为 true,可以为部署的所有应用程序全局启用 Weld 开发模式:

/subsystem=weld:write-attribute(name=development-mode,value=true)

7.2.1. 默认 Bean 发现模式

Bean 存档的默认 bean 发现模式被 标注。此类 Bean 存档 被认为是隐式 Bean 存档

如果 注解 了 bean 发现模式,则:

  • 不会发现没有 bean 定义注解 且不是 Bean 类会话 Bean 类的 Bean 类。
  • 不在会话 Bean 上以及 bean 类没有 Bean 定义注释的制作者方法不会发现。
  • 不在会话 Bean 上以及 bean 类没有 Bean 定义注解的制作者字段不会被发现。
  • 不在会话 Bean 上且 bean 类没有 Bean 定义注解的推理器方法不会被发现。
  • 不在会话 Bean 上以及 bean 类没有 Bean 定义注解的观察方法不会发现。
重要

只有将发现模式设置为 all 时,Contexts 和 Dependency Injection 部分中的所有示例才有效。

Bean 定义注解

Bean 类可以具有一个 定义注解的 Bean,以便能够将其放置在应用程序中的任何位置,如 bean 存档中所定义。Bean 类中带有 Bean 定义注解,这被认为是隐式 Bean。

Bean 定义注解集合包含:

  • @ApplicationScoped@SessionScoped@ConversationScoped@RequestScoped 注释.
  • 所有其他普通范围类型.
  • @interceptor@Decorator 注释.
  • 所有 stereotype 注释,即标有 @Stereotype 的 注释。
  • @Dependent 范围注释.

如果在 Bean 类上声明其中一个注释,则 bean 类被认为具有 Bean 定义注释。

示例:Bean 定义注解

@Dependent
public class BookShop
        extends Business
        implements Shop<Book> {
    ...
}

注意

为确保与其他 JSR-330 实施以及 Jakarta 上下文和依赖注入规范兼容,除 @Dependent 外,所有伪作用注释都不是定义注释。但是,stereotype 注释(包括伪范围注释)是 Bean 定义注解。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.