我发现了这个问题:@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
提交
取消
