我应该使用@EJB还是@Inject

我发现了这个问题:@Inject和@EJB有什么区别,但是我没有变得更明智。我之前没有做过Java EE,也没有依赖注入的经验,所以我不知道应该使用什么?

@EJB是旧的注入方式吗?在使用@Inject时使用此批注时,EJB容器是否通过新的CDI框架进行注入?有区别吗?如果是这种情况,我应该使用@Inject而不是@EJB吗?


白猪掌柜的
浏览 503回答 3
3回答

杨魅力

将@EJB用于注入EJB的仅适用于现在相当一段时间。@Inject可以注入任何托管bean,并且是新CDI规范的一部分(自Java EE 6起)。在简单的情况下,您只需更改@EJB为即可@Inject。在更先进的情况下(例如,当您在很大程度上依赖@EJB的属性,如beanName,lookup或beanInterface)不是为了使用@Inject,你需要定义一个@Producer字段或方法。

MMMHUHU

我从切换到@Inject,@EJB是因为@EJB允许循环注射而@Inject对其进行呕吐。详细信息:我需要@PostConstruct调用一个@Asynchronous方法,但是它将同步进行。进行异步调用的唯一方法是让原始调用另一个bean的方法,然后让它回调原始bean的方法。为此,每个bean需要引用另一个-因此是循环的。@Inject因这项工作而失败,但是@EJB工作了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java