为什么有不同的beanpipe理注释

有什么区别

import javax.annotation.ManagedBean; import javax.enterprise.context.SessionScoped; 

 import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; 

  1. javax.enterprise.context.SessionScoped ( JSR 346 )和javax.enterprise.context.*包中的所有其他注释都维护CDI的上下文。 CDI为Java EE空间内的dependency injection,bean和通用资源pipe理提供了一种替代的,多function的和更强大的机制。 这是JSFpipe理的bean的一种替代方法,它甚至可以取代即将到来的JSF版本中的JSF beanpipe理机制。

    目前,JSF和CDI注释的bean在任何给定的Java EE web应用程序中都是可以互换的(给出一些小的限制)。 但是,CDI注释的bean远远超出了Web层领域,这就是为什么Java EE规范正在发展,使CDI成为标准bean和DI机制。

    虽然CDI可能是所有Java EE开发的明显select,但JSF托pipe的bean可以在servlet容器(Tomcat)和应用程序服务器(Glassfish,JBoss等)之间移植。 CDI bean只能在完整的应用程序服务器中生存。 但是, 一些legwork ,Tomcat 7可以连线支持CDI。

    具体来说, javax.enterprise.context.SessionScoped是CDI中JSF Session Scope的并行实现。

  2. javax.faces.bean.SessionScoped ( JSR 314 )和javax.faces.bean.*包下的所有其他注释保持JSF特定的dependency injection和beanpipe理机制。 但是,使用JSF注释进行注释的Bean仅在Web层内有用。 所有可用于JSF注释的范围都已经在CDI规范中复制了。

  3. javax.annotation.*下的javax.annotation.ManagedBean ( JSR 316 )和其他与DI有关的注解是为了在Java EE规范中推广其他用途的基于JSF的注解而实际上不应该被terminal用户使用,开发商。

他们为什么存在? 那么国际海事组织呢,从JSF豆转向CDI豆是这项技术的自然发展。 JSF bean运行良好,但Spring,Guice和Seam等公司明显表示这种技术还不够。 还需要弥合Web组件和EJB之间的差距,并且对这种需求的响应是CDI。

也看到这些相关的问题:

  • JSF:备份豆(@ManagedBean)或CDI豆(@Named)?
  • Java EE 6 @ javax.annotation.ManagedBean与@javax.inject.named比较@ javax.faces.ManagedBean