我正在阅读这篇文章,这让我有些困惑:在那篇文章中提到了每个特定容器使用哪个注释:JSF、CDI 或 EJB 容器。
作为一个初学者,我学习了 JSF 框架,并习惯了它的 @ManagedBean 注释和它的可选名称参数,用于从 JSF 页面引用 bean,并且对 CDI 了解不多,我使用 EJB 来代替它的强大功能(甚至读完这篇文章后,我仍然认为 EJB 比 CDI 更强大、更有特色)。
所以.. JSF 和 CDI 容器都有自己的注释和在网页上引用 bean 的方式,但是 EJB 只有 @Stateless(或 @Stateful),因此不能在网页上引用,这意味着 JSF 容器必须总是附有 EJB(因为我认为混合 EJB 和 CDI 容器是荒谬的,因为它们几乎相似,但在这一点上,如果我错了,我希望有人告诉我)。
JSF 容器的问题在于
“还没有完全成熟的容器”
正如那篇帖子所说,我所知道的最糟糕的是@ManagedBean旁边的Netbeans中的警告消息:
“来自包 javax.faces.bean 的注释将在下一个 JSF 版本中被弃用。推荐使用 CDI 注释。”
(好吧,这里有另一个用于该注释的替代包:javax.annotation.ManagedBean,但我不知道我是否可以使用它,也不知道它是否具有用于在网页上引用 bean 的参数以及它是哪一个)
所以现在我开始怀疑未来我应该使用哪种容器组合。CDI + EJB 是未来吗?
为所有人喝彩。