我会试一试的。希望我能澄清你的问题... =D
当您说“我将项目包含在当前项目的构建路径中。”时,我假设您添加了一个 spring web 项目作为对另一个 spring web 项目的依赖项。总之,你不能将一个 spring web 项目添加为另一个 spring web 项目的依赖项。让我们先花点时间了解一下如何连接 bean 以首先在 Spring 容器中进行注入...
当你使用 spring 框架时,你会在你的 web.xml 中找到类似的代码,如下所示:
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
你刚才所做的是使用spring框架的servlet来处理每个以.htm结尾的请求URL。当然你也可以另外配置。
您还应该有另一个包含所有 bean 标记的 xml。默认情况下,它是 spring-servlet.xml。在这个 spring-servlet.xml 中,如果您采用 xml 配置方法,您可以指定将哪个 bean 注入哪个 bean。如果您使用注解方法,您应该有一个标签来扫描所有现有的@Component(及其派生注解)注解类,然后使用@Inject 或@Autowired 注解注入声明的实例(bean)。例如:
<context:component-scan
base-package="org.companyname.webappname" />
<context:annotation-config />
到目前为止,我一直在解释的是如何在 spring 容器中声明一个 bean。只有当您在 spring 容器中声明一个 bean(当 Web 服务器启动时存在于 spring 容器中)并指定它应该注入哪个类时,才会发生“注入”。
所以现在你有两个 spring web 项目(假设),有两个 web.xml 和两个 spring 容器,你将在获取基础项目的 spring 容器来查找依赖的 spring web 项目的包/类时遇到问题。我建议你将依赖项目中的所有类都移到基础项目中,并且只有一个 spring 容器(一个 web.xml)。
另一种方法是创建一个 Java 库项目,将所有服务、DAO 和 Web 服务类放入其中并将其构建为 jar。在您的基础项目中,添加 jar 文件(作为依赖项),然后对 jar 包进行组件扫描,或者使用 jar 包在 xml 中声明它。无论哪种方式,您都应该只有一个 spring 容器,一个 web.xml。
希望我没有让你感到困惑。
您首先要了解 IoC 容器的工作原理。这里是你需要阅读和理解 Spring IoC 工作原理的地方:http://docs.spring.io/spring/docs/3.0.x/reference/beans.html
更新:如果你在做一个非 web spring 项目,那么只有一个 spring 容器的概念仍然存在。将依赖项目的类移动到jar文件的解决方案仍然有效。除非你不通过 web.xml 配置 spring。 =D