当前位置: 首页 > 知识库问答 >
问题:

Spring专家项目结构注.xml

公瑞
2023-03-14

我想获得有关使用Spring启动设置多模块 Maven 项目的帮助。

如果我错了,请纠正我,但是我知道Spring-Boot读取启动主应用程序(用< code > @ Spring Boot Application 注释,用< code > Spring Application . run 运行)并通过反射找到必要的类。这意味着它首先访问start类,然后继续寻找控制器、模型、存储库。如果是这样的话,如果我有一个这样的项目结构,我该如何在每个模块的pom.xml中设置依赖关系呢?

app
--src
--pom.xml

core
--pom.xml

--models
----/pom.xml

--controllers
----/pom.xml

--repositories
----/pom.xml

pom.xml

共有3个答案

巫马阳飙
2023-03-14

我在一个GitHub项目中配置了一个多模块maven项目:

https://github . com/cristian profile/spring-boot-MVC-complete-example

这是项目maven模块结构示例:

 Spring mvc rest maven module ---> service maven module  ---> repository maven module

主模块应该这样配置(Spring mvc rest层):

@SpringBootConfiguration
@EnableAutoConfiguration
//spring mvc module auto scan only its package
@ComponentScan(basePackageClasses = HelloWorldController.class)
//It needs Service bean so it will import ConfigurationService.class from
// Service maven module
@Import({ConfigurationService.class})

完整的类:

https://github.com/cristianprofile/spring-boot-mvc-complete-example/blob/develop/spring-boot-mvc-rest/src/main/java/com/mylab/cromero/controller/Application.java

它只会扫描它的包裹:

HelloWorldController.class  -->  com.mylab.cromero.controller;

此Rest层使用service maven模块,因此有必要添加依赖项:

    <dependency>
        <groupId>com.mylab.cromero.core</groupId>
        <artifactId>mylab-core-service-impl</artifactId>
        <version>0.0.2-SNAPSHOT</version>
    </dependency>

完整的pom文件:

https://github.com/cristianprofile/spring-boot-mvc-complete-example/blob/develop/spring-boot-mvc-rest/pom.xml#L16

从服务maven模块ConfigurationService.class自动扫描它的包,它将导入ConfigurationRepository.class(存储库maven模块)

@Configuration
//It needs repository's bean so it will import ConfigurationRepository.class from
// Repository maven module
@Import(ConfigurationRepository.class)
//service layer module auto scan only its package
@ComponentScan(basePackageClasses = ConfigurationService.class)
public class ConfigurationService {

}

完成Service maven模块代码:

https://github.com/cristianprofile/spring-boot-mvc-complete-example/blob/develop/mylab-core/mylab-core-service-impl/src/main/java/com/mylab/cromero/service/ConfigurationService.java#L12

服务maven模块层与maven存储库模块有依赖关系:

https://github.com/cristianprofile/spring-boot-mvc-complete-example/blob/develop/mylab-core/mylab-core-service-impl/pom.xml#L38

存储库模块将自动配置 jpa 和域分类:

@Configuration
@EnableJpaRepositories(basePackages = "com.mylab.cromero.repository")
@EntityScan(basePackageClasses=Base.class)
@ComponentScan(basePackageClasses = BaseRepository.class)
public class ConfigurationRepository {

}
慕乐池
2023-03-14

Spring启动将从用@SpringBootApplication注释的类的包中进行组件扫描。组件扫描意味着它以递归方式查看该包下的类,分析注释,并连接它识别的任何内容。这可以包括控制器、具有@Value注释的简单变量、具有@Autowired的成员以及许多其他内容。

您实际上可以跳转到@SpringBootApplication注释的源代码,并看到它扩展到许多其他注释,@ComponentScan就是其中之一。

如果你的所有模块都在一个子层次结构包中,那么无论如何它们都会被正确地扫描。不过,子模块通常会位于稍微不同的包层次结构中。在这种情况下,您可以在代码中显式指定< code>@ComponentScan(),并在< code>()中列出组件扫描的基础包。

在这一点上,它是否是一个子模块并不重要;这就像扫描你包含的任何其他库中的类一样。

一般建议

另外,仅供参考——多模块项目可能有点难以管理(从许多不同的经验来看)。但是,如果使用得当,它们会非常好。如果你是Maven的初学者,保留具有适当发布周期的单独、定义良好的项目并将它们作为正常依赖项导入可能会更明智。

所以,我不支持也不反对他们,但要确保你能很好地理解他们:)。

裴泰平
2023-03-14

请查看完整的指南如何在Spring启动中创建多模块项目。

https://spring.io/guides/gs/multi-module/

 类似资料:
  • 问这个问题的另一种方法是: 如何使用Azure个人访问令牌验证项目,以便maven build可以下载发布在

  • 当默认的项目结构不适用时,可以自定义配置。查看 Gradle 文档中 Java plugin 部分以了解如何在纯 Java 项目中进行配置。 Android plugin 使用了类似的语法,但因为 Android 有自己的 sourceSets,所以需要配置到 android 块中。下面的例子使用了旧的项目结构(Eclipse),并把 androidTest 的 sourceSet 映射到 tes

  • 实际上,我是使用Maven和spring的新手,我很好奇我们是如何标准化项目结构的。正如我们所知,如果我们第一次创建Maven项目,它只给出了这样的结构: 我明白,Java目录是我们放Java代码的目录。但是,当我们制作一个应该有HTML、CSS或Javascript等web文件的web应用程序时,我们需要另一个目录来放置它。 当我在Maven中使用spring或spring boot时,它也在主

  • 当涉及制作 electron 应用程序的问题时,项目结构会有些不同。如果你以前使用过官方的 vuejs-templates/webpack 设置,那么你对这个结构应该很熟悉。本文档在此章节将尝试解释样板代码的工作原理以及应用程序在构建中的一些区别。 单一的 package.json 设置 就在不久之前,两个 package.json 的设置是必需的,但是,感谢 @electron-userland

  • . ├── build/ # webpack 配置文件 │ └── ... ├── config/ │ ├── index.js # 项目核心配置 │ └── ... ├── src/ │ ├── main.js # 程序入口文件 │

  • 上面提到的构建文件中有默认的文件夹结构。Gradle 遵循约定优先于配置的概念,在尽可能的情况下提供合理的默认配置参数。最基本的项目有两个 “source sets” 组件,分别存放应用代码及测试代码。它们分别位于: src/main/ src/androidTest/ 里面每个存在的文件夹对应相应的源组件。对于 Java plugin 和 Android plugin 来说,它们的 Java 代