gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:01:34 24 4
gpt4 key购买 nike

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

我有一个 spring 项目,它具有与数据库和网络服务通信的所有服务。

我正在编写一个需要与数据库和网络服务对话的新应用程序。

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

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

但是我遇到了依赖注入(inject)错误。现在我有点想看看我当前项目设置中需要的所有其他文件,以便我可以重新使用现有项目。

我是否需要将其他项目的上下文文件导入当前项目?如果可以,有人可以指点我可以引用的文档吗?

最佳答案

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

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

当你使用 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 注入(inject)到哪个 bean。如果您使用注释方法,您应该有一个标记来扫描所有现有的@Component(及其派生注释)注释类,然后使用@Inject 或@Autowired 注释来注入(inject)声明的实例(bean)。例如:

<context:component-scan
base-package="org.companyname.webappname" />
<context:annotation-config />

到目前为止,我一直在解释的是如何在 spring 容器中声明一个 bean。仅当您在 spring 容器中声明一个 bean(当 Web 服务器启动时存在于 spring 容器中)并指定应将其注入(inject)哪个类时,才会发生“注入(inject)”。

现在你有两个 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

关于java - 如何将一个spring项目包含到另一个spring项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22355301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com