我发现了这个问题:@Inject和@EJB有什么区别,但是我没有变得更明智。我之前没有做过Java EE,也没有依赖注入的经验,所以我不知道应该使用什么?@EJB是旧的注入方式吗?在使用@Inject时使用此批注时,EJB容器是否通过新的CDI框架进行注入?有区别吗?如果是这种情况,我应该使用@Inject而不是@EJB吗?
3 回答
杨魅力
TA贡献1811条经验 获得超6个赞
将@EJB
用于注入EJB的仅适用于现在相当一段时间。@Inject
可以注入任何托管bean,并且是新CDI规范的一部分(自Java EE 6起)。
在简单的情况下,您只需更改@EJB
为即可@Inject
。在更先进的情况下(例如,当您在很大程度上依赖@EJB
的属性,如beanName
,lookup
或beanInterface
)不是为了使用@Inject
,你需要定义一个@Producer
字段或方法。
MMMHUHU
TA贡献1834条经验 获得超8个赞
我从切换到@Inject
,@EJB
是因为@EJB
允许循环注射而@Inject
对其进行呕吐。
详细信息:我需要@PostConstruct
调用一个@Asynchronous
方法,但是它将同步进行。进行异步调用的唯一方法是让原始调用另一个bean的方法,然后让它回调原始bean的方法。为此,每个bean需要引用另一个-因此是循环的。@Inject
因这项工作而失败,但是@EJB
工作了。
添加回答
举报
0/150
提交
取消