gpt4 book ai didi

java - 使用 Spring 的多模块 Maven 项目 - 我是否将 Spring 包含在 Web 层或服务层中?

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:02 24 4
gpt4 key购买 nike

所以我有一个多模块 Maven 项目,它只有两个子模块:Web 和 Service。 Web 层只有一个 Controller 和该 Controller 中的一个方法,该方法仅在屏幕上显示一只狗的年龄。

狗从哪里来?好吧,我有另一个模块,它是一个“服务”层,它基本上包含一个 Dog 商店/服务,并且这个狗商店实际上在任何给定时间只包含一个 Dog 对象(这全部用于学习目的)。

我需要在我的服务模块中使用 Spring 的依赖注入(inject)功能,以便将 Dog 对象 Autowiring 到我的 Dog 存储中,并且我显然需要 Spring 的 D.I.我的 Web 模块中的功能,以便将 Dog 存储/服务自动连接到我的 Dog Controller 中,但我不知道哪个 POM.xml 应该包含 Spring 依赖项。

我的问题是这样的:我需要在服务模块和 Web 模块中都添加 Spring 依赖项吗?事实上,最终项目将从 Web 模块构建。 Web 模块将依赖于服务模块(因为我需要 Dog Service 和 Dog 对象类)。

如果我不将 spring 作为依赖项包含在我的服务模块中,那么当我使用像 @Autowire 这样的注释时,编译器会崩溃。所以这让我有点困惑。我应该将 spring 依赖项放在哪个模块中?

也许只是将整个 Spring Web MVC 依赖项放在 Service 模块中,并让 Web 模块“继承”所有自定义服务类以及下载的 Spring jar? (同样,网络模块将依赖于服务模块)。这对我来说似乎有点违反直觉,因为它并不是真正依赖于 Spring Web MVC 的服务模块。实际上,服务模块只需要Spring Context。但这里令人困惑的是,“最终”spring 上下文(Dispatcher Servlet 等)只会在 Web 模块构建中使用一次。

我只是创建服务模块,以便我的 web 模块可以继承我构建的那些类,但是 web 模块应该从服务模块继承 spring 类,还是 web 模块应该在它自己的 POM.xml 中实际声明 spring 类?如果是后一种选择,那么当服务模块看到我正在使用 Spring 框架中的注释和其他内容而不依赖于它时,它不会 panic 吗?

我意识到这很多,但我试图尽可能清楚地说明我的情况,我希望我的问题有意义。感谢您的回答!

最佳答案

我建议向您的应用程序添加一个父 POM,并保留其中定义的所有依赖项,并使您的 Web 和服务模块成为子模块。请参阅this了解更多详情

在你的父 POM 中,依赖关系定义如下,

<dependencyManagement>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
</dependencyManagement>

在您的网络和服务模块中使用上面定义的依赖关系,

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>

此外,将服务模块添加为 Web 模块的依赖项。

关于java - 使用 Spring 的多模块 Maven 项目 - 我是否将 Spring 包含在 Web 层或服务层中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43174105/

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