没有额外@Named
注释的@...Scoped
CDI bean是否有默认范围?我在official Weld documentation中找不到任何相关信息。
可以通过JSF访问@Named
bean而无需额外的注释,因此可能会出现一些隐式范围。
谢谢
答案 0 :(得分:42)
默认范围是从属伪范围@Dependent
,如weld documentation中所述:
CDI具有所谓的依赖伪范围。这是默认值 没有显式声明范围类型的bean的范围。 [...] 从不在不同的bean之间共享依赖bean的实例 客户或不同的注射点。它完全是一个依赖 一些其他对象的对象。它是对象实例化的 属于被创建,并在它所属的对象被销毁时被销毁 破坏。
javadoc for this annotation提供了有关此范围的更多信息:
使用范围@Dependent声明的Bean与使用bean的bean的行为不同 其他内置范围类型。当bean被声明具有范围时 @Dependent:
- 在多个注入点之间不共享注入的bean实例。
- 注入到容器正在创建的对象中的bean的任何实例都绑定到新的生命周期 创造了对象。
- 当评估JSF或JSP页面中通过其EL名称引用bean的Unified EL表达式时,最多只有一个实例 bean被实例化。此实例仅用于服务单个实例 评估EL表达。如果豆EL名称为蓝色,则重复使用 在EL表达式中多次出现,但在从未重复使用时 EL表达式再次被评估,或者当另一个EL表达式被评估时 被评估。
- 接收生产者方法,生产者字段,处理者方法或观察者方法调用的bean的任何实例都存在于 只调用的服务。
- 注入处理器方法或观察者方法的方法参数的bean的任何实例都存在为方法
服务 仅限调用。