当我试图在eclipse中创建一个Dynamic Web Project时,我在eclipse中收到一些通知,告诉我除了使用的@EJB依赖注入之外,我不仅要在构建中引用EJB,还要导入EJB包。 。
任何人都可以帮我澄清为什么这三个都需要以及究竟发生了什么。我问的原因是因为单独导入EJB包就足以将EJB类放在调用类的范围内,这表明我还没有清楚地了解JEE6试图通过注释实现什么。
编辑:澄清一下,这是关于EJB的一般性问题。它实际上工作我只是好奇为什么除了依赖注入之外还需要导入bean。看起来它们只是在另一个文件(servlet或bean等)中引用EJB类的两种方式,但我不认为这是因为必须有一些特定的原因,即通过导入包完成注入/ bean的类。
谢谢,
答案 0 :(得分:1)
这听起来好像你误解了Java import
关键字的含义。它不包括当前类中的类的源代码,如PHP的include()
,CSS @import
,JSP的<jsp:include>
所做的或类似的东西。它不会在代码中注入任何内容。
当您在代码中使用非FQN类名时,import
是必需的,这样编译器就能理解您正在引用的类。想象一下,除了当前包之外,您在多个不同的包中都有一个名为FooService
的类;如果没有导入或显式FQN,编译器就不知道你指的是哪一个,因此如果代码功能正常(即该类已被正确使用并以正确的方式访问),则无法进行任何检查字段/方法名称和正确的方法参数等。)
如果您发现import
关键字因某些非显而易见的原因而令人不安,那么您也可以通过FQN(完全限定名称,因此包括完整的包名称)来声明该类。 E.g:
@EJB
com.example.business.FooService fooService;
这样您就可以删除import com.example.business.FooService;
行。