在另一个bean中注入相同或更广泛范围的bean在JSF或CDI bean中完全合法且正确,就像您提供的示例一样.
CDI bean和JSF托管bean之间的区别在于,当您尝试在另一个bean中注入较窄范围的bean时(例如将@RequestScopedbean注入@SessionScoped一个),只有在使用CDI @Namedbean 时才可能,但这是不可能的使用JSF时@ManagedBean.
CDI bean可能的原因与它们的代理模式机制有关,与JSF机制相比,它更灵活(基于调用setter以直接注入物理实例).
这种代理机制允许CDI容器传递对代理而不是注入bean的引用(除非bean具有默认范围@Dependent).因此,该代理将负责处理对注入的bean的所有调用,并将它们转发/重定向到正确的bean实例.
| 归档时间: |
|
| 查看次数: |
1064 次 |
| 最近记录: |