27

没有附加注释的@NamedCDI bean是否有任何默认范围?我在Weld 官方文档@...Scoped中没有找到任何相关信息。

一个@Namedbean 可以通过 JSF 访问而无需额外的注释,因此似乎有一些隐式范围。

谢谢

4

1 回答 1

47

默认范围是依赖伪范围@Dependent,如焊接文档中所述:

CDI 具有所谓的依赖伪作用域。这是未显式声​​明范围类型的 bean 的默认范围。[...] 依赖 bean 的实例永远不会在不同的客户端或不同的注入点之间共享。它严格来说是某个其他对象的依赖对象。它在它所属的对象被创建时被实例化,在它所属的对象被销毁时被销毁。

此注释的javadoc提供了有关此范围的更多信息:

使用范围 @Dependent 声明的 Bean 与具有其他内置范围类型的 Bean 的行为不同。当一个 bean 被声明为具有@Dependent 范围时:

  • 没有注入的 bean 实例在多个注入点之间共享。
  • 注入到由容器创建的对象中的任何 bean 实例都绑定到新
    创建对象的生命周期。
  • 当评估 JSF 或 JSP 页面中通过其 EL 名称引用 bean 的 Unified EL 表达式时,最多实例化 bean 的一个实例。此实例的存在仅服务于 EL 表达式的单个评估。如果 bean EL 名称
    在 EL 表达式中出现多次,则它会被重用,但在再次评估 EL 表达式或评估另一个 EL 表达式时永远不会重用
  • 任何接收生产者方法、生产者字段、处置者方法或观察者方法调用的 bean 实例都存在
    ,只为该调用提供服务。
  • 注入到 disposer 方法或观察者方法的方法参数中的任何 bean 实例都存在,
    仅用于为方法调用提供服务。
于 2012-04-24T07:38:25.127 回答