使用哪种方法注入 EJB?
Which method to use for injecting EJB?
我已经在网上和 SO 上阅读了很多帖子,但我仍然不清楚使用哪个注释来注入 EJB。
任何人都可以指导何时使用哪个注解来注入 EJB(以及可能的优缺点):
1) @EJB
2) @Resource
3) @Inject
这可能是一个基本问题,我确实在寻找答案,但我对此还不是很清楚。
我从未见过可以使用 @Resource
注入 EJB 的地方。它可能在某些服务器上工作,但不太可能便携。
@EJB
vs @Inject
的问题比较复杂
CDI 和 @Inject
已添加到 Java EE 6 规范中。可以将 EJB @Inject 注入到 CDI bean 中,但不能在太多其他(如果有的话)地方。
Java EE 7 规范将此基本统一到可以在大多数(如果不是全部)地方互换使用 @Inject
或 @EJB
的程度。本质上,所有 "sub" 规范(例如 EJB 规范本身、servlet 规范、JAX-WS、JAX-RS 等)都必须更新以支持 @Inject
以及 @EJB
。但是,如果您需要指定 @EJB 注释上可用的任何属性,那么这些属性在 @Inject 上不可用。
因此,如果您 运行 在符合 Java EE 7 的环境中并且不需要任何 @,请随时使用 @Inject
EJB 属性,否则使用 @EJB
.
我已经在网上和 SO 上阅读了很多帖子,但我仍然不清楚使用哪个注释来注入 EJB。
任何人都可以指导何时使用哪个注解来注入 EJB(以及可能的优缺点):
1) @EJB
2) @Resource
3) @Inject
这可能是一个基本问题,我确实在寻找答案,但我对此还不是很清楚。
我从未见过可以使用 @Resource
注入 EJB 的地方。它可能在某些服务器上工作,但不太可能便携。
@EJB
vs @Inject
的问题比较复杂
CDI 和 @Inject
已添加到 Java EE 6 规范中。可以将 EJB @Inject 注入到 CDI bean 中,但不能在太多其他(如果有的话)地方。
Java EE 7 规范将此基本统一到可以在大多数(如果不是全部)地方互换使用 @Inject
或 @EJB
的程度。本质上,所有 "sub" 规范(例如 EJB 规范本身、servlet 规范、JAX-WS、JAX-RS 等)都必须更新以支持 @Inject
以及 @EJB
。但是,如果您需要指定 @EJB 注释上可用的任何属性,那么这些属性在 @Inject 上不可用。
因此,如果您 运行 在符合 Java EE 7 的环境中并且不需要任何 @,请随时使用 @Inject
EJB 属性,否则使用 @EJB
.