什么是命名CDI Bean的默认范围是什么?(What is the default scope o

2019-06-23 21:43发布

是否有一个默认的任何范围@Named CDI豆,无需额外@...Scoped的注解? 我还没有找到任何相关信息的官方文档焊缝 。

一个@Named bean可以在JSF访问而无需额外的注解,所以一些隐含的范围似乎有可能。

谢谢

Answer 1:

默认范围是因伪范围@Dependent ,作为中所述焊接文档 :

CDI采用了所谓的依赖伪范围。 这是一个bean不显式声明范围类型的默认范围。 [...]依赖bean的实例是从来没有不同的客户端或不同的注射点之间的共享。 这是严格的其他对象的依赖对象。 创建属于该对象时,当对象属于被破坏它被实例化,并销毁。

在此注释的javadoc提供了关于此范围内的一些详细信息:

与范围内声明的豆类@Dependent不同的表现与其他内置范围类型的咖啡豆。 当一个bean被宣布为具有范围@Dependent:

  • 豆没有注入实例多个注射点之间不断的共享。
  • 注入到正在由容器创建的对象的bean的任何实例绑定到的新生命周期
    创建的对象。
  • 当在指的是通过其EL名称豆一个JSF或JSP页面一个统一EL表达式,所述豆的至多一个实例被实例化。 这种情况的存在是为了服务EL表达式的只是一个单一的评价。 如果bean EL名据重用
    出现多次在EL表达,但是当EL表达式再次求值永远不会重复使用时,或者当另一个EL表达
    被评估。
  • 其接收生产者方法,制作场,处置方法或观察者方法调用的bean的任何实例的存在是为了
    服务只有调用。
  • 注入到处理器的方法或观察者方法的方法参数的bean的任何实例存在于业务的方法
    调用只。


文章来源: What is the default scope of a Named CDI bean?