我觉得Java EE 6规范中有一点混乱。有几组注释。
我们有像@Stateful
和@Stateless
这样的用于创建EJB的javax.ejb
注释。
还有一个用于创建托管bean的@javax.annotation.ManagedBean
。
在javax.enterprise.context
中有像@SessionScoped
和@RequestScoped
这样的注释。
此外,javax.faces.bean
包中还包含@ManagedBean
和@SessionScoped
/@RequestScoped
注释。
为了使事件更加复杂,有一个带有@Named
注释的javax.inject
包。
有人能描述一下它们是如何相互联系的吗?
在哪里可以使用@EJB
、@Inject
或@ManagedPropery
注入其他bean?
发布于 2014-06-17 19:19:12
由于没有专门针对@javax.annotation.ManagedBean
的回复,这里有一个指向类似问题的链接:Backing beans (@ManagedBean) or CDI Beans (@Named)?。该规范可以在http://download.oracle.com/otndocs/jcp/managed_beans-1.0-fr-eval-oth-JSpec/上找到。所以在我看来,@javax.annotation.ManagedBean
应该是@javax.faces.bean.ManagedBean
的泛化。
据我所知,JSF托管Beans正在逐步淘汰,取而代之的是CDI (可能从JSF2.3中被弃用?),所以我猜@javax.annotation.ManagedBean
现在正变得更加过时。
https://stackoverflow.com/questions/11986847
复制相似问题