当前位置: 首页 > 知识库问答 >
问题:

注射过程中的CDI Bean范围不起作用

孙自怡
2023-03-14

我想在注射过程中给CDI中的pojo bean一个移动范围。

我创建了一个普通的bean,并在@javax.faces.bean.ViewScoped托管Bean中注入了与@javax.enterprise.context.Application ationScoped相同的内容:

@Inject
@ApplicationScoped
Pojo pojo;

//POJO类

Class Pojo {
  private String var;

  public Pojo() {

  }

  public String getVar() {
    return var;
  }

  public void setVar(String var) {
    this.var = var;
  }
}

当我使用相同的语法注入时,Pojo bean的填充值无法在新视图bean中恢复。

但是当我在类声明中使用@Application ationScoped时,它会起作用,然后是非作用域注入,如下所示:

@ApplicationScoped
Class Pojo {
      private String var;

注射:

@Inject
Pojo pojo;

前一种情况在我做制片人和资格赛时得到了解决,但我觉得这将是一种我不应该做的开销。作为CDI的新手,我想问一下我到底错过了什么。

共有1个答案

史淇
2023-03-14

范围和上下文管理是CDI中非常强大的功能。它也是组件的业务逻辑的一部分(一个@Application ationScopedbean不会以与一个@ResestScoped相同的方式开发),这就是为什么作用域链接到bean定义。注入点只是您使用bean的地方,而不是您定义bean的地方,因此无法在规范级别上定义注入点bean的范围。现在,如果你真的想使用这个功能,你可以开发一个便携式扩展来增加这种可能性。但是您可能还必须在限定符系统上工作,因为范围不在bean解析过程中使用(即,如果没有特定的限定符,在不同范围内具有相同类型的2个bean将在给定的注入点上发生冲突)。

 类似资料:
  • 我想注入CDI SessionScoped bean到JSP页面。 当我以这种方式使用bean时,它工作得很好,我在JSP页面上看到了初始值。 当我将同一个bean注入到一个服务中时就会出现问题,我从API中的另一个servlet调用该服务。在这种情况下,我不会在JSP页面上获得更新的值。看起来我使用注释在JSP页面和服务内部得到了不同的bean 有人能告诉我们如何在JSP和从servlet访问的

  • 当我尝试使用Cucumber最新版本4.7.1(即“io.cucumber”)时,使用范围报告3.0不会生成报告。我尝试了不同版本的范围报告,但仍然正确生成输出。 我尝试了Cucumber和Extent Report之间的不同组合版本,但仍然没有输出。有人可以在这里发光来提高输出。 代码: 慰问: oader.java:362NoClassDefFoundError: gherkin/format

  • 问题内容: 为什么结果是 不: 我们不能在范围内使用指针?这是代码,我设置了一个指针,该指针指向范围循环,但是失败了。 问题答案: 该变量设置为指向,而不是slice元素。这段代码设置为指向slice元素: 游乐场的例子

  • 我正在使用Lucene 8.2。Java11中的0。 我试图索引一个值,以便我可以使用范围查询过滤它,例如:。然而,任何变体,甚至,返回都会导致这个最小的示例。一旦我从其中删除使其成为,我就会得到结果。 所以我在想我一定是在索引上犯了一个错误,但是我不知道它可能是什么。 从JavaDoc: 用于快速范围过滤器的索引长字段。如果还需要存储该值,则应添加一个单独的StoredField实例。在搜索时查

  • 我有一个基于Spring 4.3.28的应用程序(即不是Spring Boot!)我想把集成测试迁移到Cucumber。 我遵循了这个教程,并将其改编成普通的Spring。 到目前为止,我编写的测试工作正常(Spring上下文已初始化等),但一旦涉及请求范围的bean,它们就会停止工作: 我创建了一个小样本项目,试图重现这个问题。 有一个名为AppConfig的上下文配置类: 在请求范围内,将获得

  • 看完这些,, 在哪里使用EJB3.1和CDI 下面的事情我还不明白,如果我错了,请纠正我。 与bean在同一个包中的所有类。xml是CDIBean,除了注释为session/message/singleton的类之外 非常感谢。:)