我正在开发一个JAVA EE 6应用程序。我正在广泛地使用CDI,我的问题是,@Inject和@Produces是否与Seam的@In和@Out相同?现在我们有了CDI,@In和@Out注解还在使用吗?
发布于 2011-04-04 13:19:07
现在有了
,@In和@Out注解还在使用吗?
@In和@Out是Seam2注释,因此在JavaEE6中不使用它们。
我的问题是,对于Seam,@Inject和@Produces是否与@In和@
相同?
@Inject和@Produces并不完全相同,但它们大体上是等价的。主要区别在于,Java EE 6依赖项是在需要时产生的(由需要依赖项的组件控制),而在Seam 2中,当某些东西准备好在其他地方使用时(由提供依赖项的组件控制),就立即执行提取。
以登录为例:
@Produces @LoggedIn User getCurrentUser() { return user;}
为什么会这样呢?我听到你问..。
原因很简单。Weld / Java EE 6通过代理(大多数)依赖项获得了巨大的性能提升。而且根本不可能代理输出:-)
除此之外: Java EE 6面向需求的方法(在需要时请求)感觉优于Seam 2(生成并存储)。
https://stackoverflow.com/questions/5532655
复制相似问题