我是EJB新手,有一些关于资源注入的东西一直困扰着我。我想这是一个非常基本的概念,但我无法自己解决这个问题。人们说这里没有愚蠢的问题,所以这就是:
我不明白的是Package Import和Resource Injection之间的区别。我所提到的差异不是关于使用(它们肯定以不同的方式使用),而是关于意义。为什么EJB不使用包导入而不是资源注入?
例如,我有一个实现接口 getInfo 的 getInfoBean 。要在客户端中使用此bean,我可以使用@EJB在JNDI或DI中查找(如果客户端部署在ACC中)。无论哪种方式,我都需要指定名称getInfo。那么,虽然EJB不让导入处理这个吗? import 的目的不是指定一些名称,以便它能让程序知道它想要使用的类或接口吗?
由于
答案 0 :(得分:1)
客户端中的import import some.package.getInfoBean
将1)将客户端绑定到该bean的特定实例,2)DI在运行时发生,并使容器能够拦截对EJB的所有调用,即管理声明性事务
因此,编译器需要import
语句来了解构建字节代码的类。 DI是一个运行时功能,使JVM能够在调用注入资源之前,期间或之后执行某些(通常很复杂的)事务。
编辑:如今,注释用于Java中的DI。 Neverthess,这并不意味着所有注释都与DI有关。例如,@Override
不影响运行时行为,如注释@Retention(value=SOURCE)
所示,它仅处理源代码。而@EJB
注释可在运行时访问,如注释本身上的@Retention(value=RUNTIME)
注释所示。此注释是DI 启用程序。