【问题标题】:EJB package import vs resource injectionEJB 包导入 vs 资源注入
【发布时间】:2011-08-19 10:18:41
【问题描述】:

我是 EJB 的新手,有一些关于资源注入的问题一直困扰着我一段时间。我想这是一个非常基本的概念,但我自己无法弄清楚。人们说没有愚蠢的问题,所以这里是:

我不明白的是包导入和资源注入之间的区别。我所指的区别不是关于用法(它们肯定以不同的方式使用),而是关于意义。为什么 EJB 不使用包导入而不是资源注入?

例如,我有一个实现接口 getInfogetInfoBean。要在客户端中使用此 bean,我可以使用 @EJB 在 JNDI 或 DI 中查找(如果客户端部署在 ACC 中)。无论哪种方式,我都需要指定名称 getInfo。那么虽然 EJB 不让 import 处理这个问题吗? import 的目的不就是指定一些名称,以便让程序知道它想使用的类或接口吗?

谢谢

【问题讨论】:

    标签: jakarta-ee dependency-injection import ejb


    【解决方案1】:

    在您的客户端中导入 import some.package.getInfoBean 将 1) 将客户端绑定到该 bean 的特定实例,并且 2) DI 在运行时发生,并使容器能够拦截对 EJB 的所有调用,即托管的声明性事务。

    因此,编译器 需要import 语句来了解要针对哪些类构建字节码。 DI 是一种运行时特性,使 JVM 能够在调用注入资源之前、期间或之后执行某些(通常是复杂的)事情。

    编辑:如今,注释用于 Java 中的 DI。尽管如此,这并不意味着所有注释都与 DI 相关。例如@Override 不影响运行时行为,如注释@Retention(value=SOURCE) 所示,它只处理源代码。而 @EJB 注释在运行时可访问,如注释本身上的 @Retention(value=RUNTIME) 注释所示。此注解是 DI enabler

    【讨论】:

    • 所以基本上导入是在编译时完成的,而 DI 是在运行时完成的。对吗?
    猜你喜欢
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    相关资源
    最近更新 更多