Java 如何将一个spring项目包含到另一个spring项目中

Java 如何将一个spring项目包含到另一个spring项目中,java,spring,spring-mvc,dependency-injection,Java,Spring,Spring Mvc,Dependency Injection,我是spring新手,目前正在努力理解在当前项目中使用现有spring项目所需的设置 我有一个spring项目,它提供了与数据库和Web服务通信的所有服务 我正在编写一个新的应用程序,它需要与数据库和Web服务进行通信 我想在另一个项目中重新使用现有的实现 我将该项目包括在当前项目的构建路径中 然而,我得到依赖注入错误。 现在我有点想看看我当前项目设置中需要的所有其他文件,以便可以重用现有项目 是否需要将其他项目的上下文文件导入到当前项目中?如果是这样的话,有人能给我指一下我可以参考的文档吗?这

我是spring新手,目前正在努力理解在当前项目中使用现有spring项目所需的设置

我有一个spring项目,它提供了与数据库和Web服务通信的所有服务

我正在编写一个新的应用程序,它需要与数据库和Web服务进行通信

我想在另一个项目中重新使用现有的实现

我将该项目包括在当前项目的构建路径中

然而,我得到依赖注入错误。 现在我有点想看看我当前项目设置中需要的所有其他文件,以便可以重用现有项目


是否需要将其他项目的上下文文件导入到当前项目中?如果是这样的话,有人能给我指一下我可以参考的文档吗?

这取决于你是如何设置项目的。 一般来说,您需要使用


可以看到这样一个例子(请参见如何在您自己的应用程序中包含该项目的说明)

我将试一试。希望我能澄清你的问题=D

当您说“我在当前项目的构建路径中包含了该项目”时,我假设您添加了一个SpringWeb项目作为另一个SpringWeb项目的依赖项。总之,您不能将一个SpringWeb项目添加为另一个SpringWeb项目的依赖项。让我们先花点时间来了解如何连接bean以在spring容器中进行注入

使用spring framework时,您会在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>

春天
org.springframework.web.servlet.DispatcherServlet
1.
春天
*.htm
您刚才所做的是使用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容器中)并指定应该将其注入哪个类时,才会发生“注入”

因此,现在您有了两个SpringWeb项目(假设),两个web.xml和两个spring容器,您将在获取基础项目的spring容器以查找依赖SpringWeb项目的包/类时遇到问题。我建议您将依赖项目中的所有类移动到基础项目中,并且只有一个spring容器(一个web.xml)

另一种方法是创建Java库项目,将所有服务、DAO和web服务类放在其中,并将其构建为jar。在您的基础项目中,添加jar文件(作为依赖项),然后对jar包进行组件扫描,或者在jar包中用xml声明它。无论哪种方式,您都应该只有一个spring容器,一个web.xml

希望我没有把你弄糊涂

您首先要了解IoC容器是如何工作的。以下是您需要阅读和理解spring IoC工作原理的地方:


更新:如果您正在做一个非WebSpring项目,那么只有一个spring容器的概念仍然存在。将依赖项目的类移动到jar文件的解决方案仍然有效。除了不通过web.xml配置spring之外=D

您需要将包含服务层bean定义的文件(例如,service context.xml)导入到新项目中。 这可以通过以下方式完成:

    <import  resource="classpath:service-context.xml"/>

嘿,看看这个: