【问题标题】:Java EE 5 dependency injection?Java EE 5 依赖注入?
【发布时间】:2012-11-11 21:31:34
【问题描述】:

既然 Java EE 5 没有 CDI,那么 DI 在这里如何工作?

可以将@EJB 注入到非 EJB 类中的 EJB 中吗? EntityManager 是否可以在非 EJB 类中注入 @PersistenceContext(容器管理而不是资源本地 EntityManager)?或者在非 EJB 类中引入资源的唯一解决方案是通过 JNDI 查找?

我所说的非 EJB 类是指没有用 @Stateless/@Statefull 或其他注释的类。

【问题讨论】:

  • 请记住,在这种情况下您可以使用 CDI 之前的框架 - Guice、PicoContainer,甚至是可怕的 Spring。他们没有将 EJB 或上下文 EntityManager 注入到他们的对象中的自然能力,但是构建一个允许他们这样做的桥梁应该相当简单,尽管这个余量太小,无法包含对此的解释.

标签: java jakarta-ee dependency-injection ejb-3.0 java-ee-5


【解决方案1】:

取自:http://www.oracle.com/technetwork/articles/javaee/injection-141192.html

请记住,Java EE 5 平台容器可以处理 仅当在容器管理上使用时才透明地注入 组件,例如 EJB bean、Servlet 和 JavaServer Pages (JSP) 技术标签处理程序。

onjava有一篇文章:http://onjava.com/pub/a/onjava/2006/01/04/dependency-injection-java-ee-5.html

它提供了一个可读的表格,其中包含哪些托管组件(每个容器)支持注入什么类型的资源。

【讨论】:

  • 假设我有一个 EJB(用 @Stateless 注释的 POJO),它有一些字段是容器管理的组件,比如用 @PersistenceContext 注释的 EntityManager 和用 @EJB/ 注释的其他 EJB 如果我想在非容器托管类中使用此 EJB 的功能我可以通过 JNDI 查找它;但是 EntityManager 和其他 EJB 会被注入并准备好使用吗?
  • 我相信是这样,您遇到了不同的行为?
猜你喜欢
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多