我正在将 JSF 2.1 应用程序迁移到 CDI。为了能够使用@javax.faces.bean.ViewScoped
注释,我正在尝试使用 MyFaces CODI,如此处所建议的。
该应用程序似乎按预期工作,但通过记录我注意到我的每个@Named
bean 的构造函数在我第一次访问它时被调用了两次。但是,它们init()
带有注释的方法@PostConstruct
只执行一次。
当这些 bean 第二次或第 n 次使用时,它们的构造函数只按正常预期调用一次。
当我从我的应用程序中删除 MyFaces CODI jar 时,它不会立即发生,所以我确信它是由它引起的。
这是正常行为吗?如果是,为什么?它对性能有影响还是会导致任何问题?
我觉得这可能与代理创建有关,但在我看来并不是 100% 清楚,所以我非常感谢您的解释。
我的配置:
- JSF 2.1
- 莫哈拉 2.1.6
- MyFaces CODI 1.0.5(使用完整包或核心 + JSF 2.0+ 测试)
- (不相关:Primefaces 3.5 和 Omnifaces 1.5)
- Glassfish 3.1.2,也在 Jboss EAP 6.0 上进行了测试,结果相同
谢谢。