Luc*_*uke 143 java ejb java-ee cdi
我发现了这个问题:@ Inject和@EJB之间的区别是什么,但我没有更明智.我以前没有完成Java EE,也没有依赖注入的经验,所以我不明白我应该使用什么?
@EJB和旧的注射方式?在使用@Inject时使用此批注时EJB容器是否完成注入使用新的CDI框架?这是不同的,如果是这种情况,我应该使用@Inject而不是@EJB吗?
Pio*_*cki 173
它@EJB仅用于注入EJB,现在可以使用很长时间了.@Inject可以注入任何托管bean,并且是新CDI规范的一部分(自Java EE 6起).
在简单的情况下,您可以简单地更改@EJB为@Inject.在更先进的情况下(例如,当您在很大程度上依赖@EJB的属性,如beanName,lookup或beanInterface)不是为了使用@Inject,你需要定义一个@Producer字段或方法.
这些资源可能有助于理解之间的差异@EJB以及@Produces如何获得他们最好的:
Antonio Goncalves的博客:
CDI第一部分
CDI第二部分
CDI第三部分
JBoss Weld文档:
CDI和Java EE生态系统
StackOverflow:
根据条件注入@EJB bean
Boz*_*zho 32
@Inject可以注入任何bean,而@EJB只能注入EJB.你可以使用任何一个注入EJB,但我更喜欢@Inject到处都是.
nec*_*cer 15
更新:此答案可能不正确或已过期.请参阅评论了解详情.
我切换@Inject到@EJB因为@EJB允许循环注射而@Inject在它上面呕吐.
细节:我需要@PostConstruct调用一个@Asynchronous方法,但它会同步执行.进行异步调用的唯一方法是让原始调用另一个bean的方法并让它回调原始bean的方法.要做到这一点,每个bean都需要引用另一个 - 因此是循环的.@Inject工作失败了@EJB.
Joh*_*nko 12
这是对该主题的一个很好的讨论.Gavin King为非远程EJB推荐@Inject over @EJB.
http://www.seamframework.org/107780.lace
要么
https://web.archive.org/web/20140812065624/http://www.seamframework.org/107780.lace
Re:用@EJB或@Inject注入?
- 2009年11月20:48 America/New_York | 链接加文金
该错误非常奇怪,因为EJB本地引用应始终可序列化.也许是玻璃鱼中的虫子?
基本上,@ Inject总是更好,因为:
Run Code Online (Sandbox Code Playgroud)it is more typesafe, it supports @Alternatives, and it is aware of the scope of the injected object.我建议不要使用@EJB,除非声明对远程EJB的引用.
和
Re:用@EJB或@Inject注入?
2009年11月17日,美国/纽约| 链接加文金
对于远程EJB,这对@EJB更好吗?
对于远程EJB,我们不能在bean类上声明元数据,如限定符,@ Alternative等,因为客户端根本无法访问该元数据.此外,必须指定一些我们本地案例不需要的额外元数据(无论是全局JNDI名称).因此所有这些东西都需要去其他地方:即@Produces声明.
了解使用 @EJB 和 @Inject 时会话 Bean 身份方面的差异也可能很有用。\n根据规范,以下代码将始终是true:
@EJB Cart cart1;\n@EJB Cart cart2;\n\xe2\x80\xa6 if (cart1.equals(cart2)) { // this test must return true ...}\nRun Code Online (Sandbox Code Playgroud)\n\n使用@Inject 代替@EJB 是不一样的。
\n\n另请参见无状态会话 Bean 身份以获取更多信息
\n| 归档时间: |
|
| 查看次数: |
98618 次 |
| 最近记录: |