Jakarta ee EJB包导入与资源注入

Jakarta ee EJB包导入与资源注入,jakarta-ee,dependency-injection,import,ejb,Jakarta Ee,Dependency Injection,Import,Ejb,我是EJB新手,关于资源注入的一些问题困扰了我一段时间。我想这是一个相当基本的概念,但我自己无法理解。人们说没有愚蠢的问题,所以这里是: 我不明白的是包导入和资源注入之间的区别。我所指的区别不是用法(它们的使用方式肯定不同),而是意义。为什么EJB不使用包导入而不是资源注入 例如,我有一个getInfoBean,它实现接口getInfo。要在客户机中使用这个bean,我可以使用@EJB在JNDI或DI中查找(如果客户机部署在ACC中)。无论哪种方式,我都需要指定名称getInfo。那么EJB不允

我是EJB新手,关于资源注入的一些问题困扰了我一段时间。我想这是一个相当基本的概念,但我自己无法理解。人们说没有愚蠢的问题,所以这里是:

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

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


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

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


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

因此基本上导入是在编译时完成的,而DI是在运行时完成的。是这样吗?