2011-08-19 157 views
0

我新的EJB,并有一些关于资源注入已被窃听我一会儿。我想这是一个非常基本的概念,但我无法自己想出来。人们说,有没有愚蠢的问题,所以这里有云:EJB封装进口VS资源注入

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

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

感谢

回答

1

在您的客户端将1)客户端绑定到bean的具体实例和进口import some.package.getInfoBean 2)DI发生在运行时,使容器拦截对EJB的所有来电,即管理声明式交易。

因此,编译要求import陈述知道对哪些类建设字节码。 DI是一个运行时功能,使JVM能够在调用注入资源之前,之中或之后执行某些(通常很复杂的)事情。

编辑:现在,注释被用于Java中的DI。 Neverthess,这并不意味着所有注释都与DI有关。例如@Override不会影响运行时行为,如注释@Retention(value=SOURCE)所示,它仅处理源代码。尽管@EJB注释由@Retention(value=RUNTIME)注释的注释本身指示是在运行时访问。此注释是DI 启用程序

+0

所以基本上是进口的东西在编译时完成的,而DI在运行时完成的。是对的吗? – NQC

+0

@NQC:是的,看我的编辑。 – home