Java 带Spring的多模块Maven项目——我是在Web层还是在服务层包含Spring?

Java 带Spring的多模块Maven项目——我是在Web层还是在服务层包含Spring?,java,spring,eclipse,maven,Java,Spring,Eclipse,Maven,所以我有一个多模块Maven项目,它只有两个子模块:Web和服务。Web层只有一个控制器和控制器中的一个方法,该控制器只在屏幕上显示狗的年龄 这条狗来自哪里?我还有另一个模块,它是一个“服务”层,基本上包含一个狗商店/服务,而这个狗商店在任何给定的时间实际上只包含一个狗对象(这都是为了学习) 我需要在我的服务模块中使用Spring的依赖项注入功能,以便将狗对象自动连接到我的狗商店,我显然需要在我的Web模块中使用Spring的D.I.功能,以便将狗商店/服务自动连接到我的狗控制器,但我不知道哪个

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

这条狗来自哪里?我还有另一个模块,它是一个“服务”层,基本上包含一个狗商店/服务,而这个狗商店在任何给定的时间实际上只包含一个狗对象(这都是为了学习)

我需要在我的服务模块中使用Spring的依赖项注入功能,以便将狗对象自动连接到我的狗商店,我显然需要在我的Web模块中使用Spring的D.I.功能,以便将狗商店/服务自动连接到我的狗控制器,但我不知道哪个POM.xml应该包含Spring依赖项

我的问题是:我是否需要在服务模块和web模块中都添加Spring依赖项?实际上,最终项目将从web模块构建。web模块将对服务模块具有依赖性(因为我需要狗服务和狗对象类)

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

也许只是将整个SpringWebMVC依赖项放在服务模块中,让Web模块“继承”所有定制服务类,以及下载的SpringJAR?(因为web模块同样依赖于服务模块)。这对我来说似乎有点违反直觉,因为它并不是真正依赖于SpringWebMVC的服务模块。实际上,服务模块只需要Spring上下文。但这里的混乱是,“最终”spring上下文(DispatcherServlet等)只会从Web模块构建中使用一次

我创建服务模块只是为了让我的web模块可以继承我构建的那些类,但是web模块应该从服务模块继承spring类,还是web模块应该在自己的POM.xml中声明spring类?如果是后一种选择,那么当服务模块看到我正在使用SpringFramework中的注释和其他东西,而没有依赖性时,它会不会崩溃


我意识到这是一个很大的问题,但我试图在我的情况下尽可能清楚,我希望我的问题是有意义的。谢谢你的回答

我建议将父POM添加到您的应用程序中,并在其中定义所有依赖项,使您的web和服务模块成为子模块。有关更多详细信息,请参阅

在父POM中,依赖项定义如下:

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

org.springframework
弹簧网
4.3.5.1发布
在web和服务模块中使用上述定义的依赖项

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

org.springframework
弹簧网

另外,将服务模块作为依赖项添加到web模块。

我建议将父POM添加到应用程序中,并在其中定义所有依赖项,使web和服务模块成为子模块。有关更多详细信息,请参阅

在父POM中,依赖项定义如下:

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

org.springframework
弹簧网
4.3.5.1发布
在web和服务模块中使用上述定义的依赖项

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

org.springframework
弹簧网
另外,将服务模块作为依赖项添加到web模块中