Java 多模块项目中的Sprint启动

Java 多模块项目中的Sprint启动,java,spring,spring-boot,Java,Spring,Spring Boot,在我们的团队中,我们正在进行一些讨论,同时开发一个相当简单的Spring Boot应用程序。因为我们想明确区分关注点,所以我们将系统中的Maven模块模块化为三个模块: 服务:具有Spring引导依赖项,取决于模型和存储库 模型:只有域类和“服务”类没有Spring引导依赖项 存储库:只有JDBC访问逻辑依赖于模型,没有Spring引导依赖 我以前做过一些Spring Boot项目,这是我第一次这样设置它。我特别关心的是,将SpringBoot保留在存储库之外是否有意义,因为这将需要我们在服务中

在我们的团队中,我们正在进行一些讨论,同时开发一个相当简单的Spring Boot应用程序。因为我们想明确区分关注点,所以我们将系统中的Maven模块模块化为三个模块:

服务:具有Spring引导依赖项,取决于模型和存储库 模型:只有域类和“服务”类没有Spring引导依赖项 存储库:只有JDBC访问逻辑依赖于模型,没有Spring引导依赖 我以前做过一些Spring Boot项目,这是我第一次这样设置它。我特别关心的是,将SpringBoot保留在存储库之外是否有意义,因为这将需要我们在服务中手动进行大量的连接,比如JDBC、jooq、liquibase等


有人对这样做是否有意义有什么建议吗?

我认为这个问题可能有基于观点的答案。然而我认为这种分离会导致开发模型看起来更像旧的瀑布模型,而不是现代方法。正如微服务方法所教导的那样,我认为应用关注点的垂直分离,在功能领域而不是抽象级别对应用程序进行模块化可能会更好。在内部,每个模块都应该处理与其功能区域相关的所有事情

我特别关心的是,将SpringBoot保留在存储库之外是否有意义,因为这将需要我们在服务中手动进行大量的连接,比如JDBC、jooq、liquibase等


如果您正确地使用TDD框架,这应该不是一个问题。我已经在多模块Maven项目Spring Boot上工作,我从来没有遇到过这方面的问题,但显然这取决于您在项目中所做的工作。

没有Spring Boot依赖性是什么意思?我的意思是存储库模块中没有对任何Spring Boot库的依赖性,仅直接发送至postgres/jooq。谢谢您的回答。理解最后一段我有个问题。我的意思是,注入(通常由Spring负责)必须在服务项目的代码中手动完成,因为它不能依赖于注释、组件扫描,因为存储库中没有Spring依赖关系。我不明白你为什么在这里提到TDD,我想是因为那里有一个类似的布线挑战?是的,有一些布线挑战。正确设置父pom.xml将允许您在所有子模块中进行注入。一个警告:这可能是容易的,也可能是困难的,这取决于您在项目中必须做什么。在这种抽象层次上很难给出更精确的答案。