jan*_*oth 11
现在我们有CDI,@ In和@Out注释是否仍在使用?
@In并且@Out是Seam 2注释,因此它们不在Java EE 6中使用.
我的问题是,@ Inject和@Produces是否与@In和@Out相同?
@Inject并且@Produces是不完全一样的,但他们是大致相当.主要区别在于Java EE 6依赖关系是在需要时生成的(由需要依赖关系的组件控制),而在Seam 2中,只要有东西准备好在其他地方使用,就会执行outjection (由提供的其他组件控制)依赖)
以登录为例:
在Java EE 6中,会话范围的登录组件执行身份验证并将经过身份验证的用户存储在私有字段中.然后,该字段由生产者方法控制.因此,每当另一个组件请求经过身份验证的用户时,就会执行以下操作:
@Produces @LoggedIn User getCurrentUser() {
return user;
}
Run Code Online (Sandbox Code Playgroud)这是为什么?我听你问......
原因很简单.Weld/Java EE 6能够代理(大多数)依赖项,从而获得巨大的性能提升.并且根本不可能代理注射:-)
好吧,除此之外:Java EE 6以需求为导向的方法(在需要时请求它)感觉优于Seam 2(生成它并将其存储起来).