我正在开发JAVA EE 6应用程序。我广泛使用CDI,我的问题是,@ Inject和@Produces是否与Seam的@In和@Out相同?有了CDI之后,是否仍在使用@In和@Out批注?
最佳答案
@In
和@Out
是Seam 2注释,因此在Java EE 6中不使用它们。
@Inject
和@Produces
并不完全相同,但大致相同。主要区别在于,Java EE 6依赖关系在需要时生成(由需要依赖关系的组件控制),而在Seam 2中,一旦准备好在其他地方使用某个东西(由提供该组件的组件控制),就会进行喷射。依赖)
以登录为例:
在Seam 2中的
@Produces @LoggedIn User getCurrentUser() {
return user;
}
这是为什么?我听到你在问...
原因很简单。 Weld/Java EE 6通过能够代理(大多数)依赖项而获得了巨大的性能提升。而且根本不可能代理喷射:-)
好吧,除此之外:Java EE 6需求导向方法(在需要时进行请求)比Seam 2(生产并存储起来)感觉更好。
关于jakarta-ee - 接缝双射和熔接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5532655/