我给它一个镜头。希望我可以为您的问题带来清晰... = D
当您说“我将项目包含在当前项目的构建路径中”时,我假设您添加了一个spring web项目作为另一个项目的依赖关系春天web项目。总之,您不能将Spring Web项目添加为另一个Spring Web项目的依赖项。我们需要一些时间来了解如何连接一个豆腐做注射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容器,在获取base-project的spring容器来查找依赖spring web项目的packages/classes时会有问题。我建议你在移动的相关项目中的所有类到原项目只有一个Spring容器(一个web.xml文件)。
另一种方法是创建一个Java库项目,将所有的服务,DAO和Web服务类中,并把它做成罐子。在您的基础项目中,添加jar文件(作为依赖关系),并对jar包执行组件扫描或使用jar包将其声明为xml。无论哪种方式,你应该只有一个弹簧容器,一个web.xml。
希望我不会混淆你。
你必须了解IoC容器是如何工作的。这里是你需要阅读和消化弹簧IoC如何工作的地方:http://docs.spring.io/spring/docs/3.0.x/reference/beans.html
更新:如果你正在做一个非web spring项目,只有一个spring容器的概念依然存在。将依赖项目的类移动到jar文件的解决方案仍然有效。除了你不通过web.xml配置spring。 = D
嘿,看看这个:http://www.javaworld.com/article/2077837/java-se/hello--osgi--part-1--bundles-换beginners.html – CodeBender