springboot 多模块

新建项目:

新建好的项目呢,咱们把多余的删掉,没有什么用处了,新建的作为父容器

然后开始新建两个Module,一个为start(启动类),一个为info

info也如上图一样建立就可以了 

然后在父级模块(根目录)下的pom中引入两个模块 记得添加packaging 为pom

 

然后呢将两个模块的pom.xml中的parent改为父工程中的数据(groupId、artifactId、version),将父级的三个值复制过来即可,info模块也如下图所示

然后start下的pom.xml中将info作为依赖也引入进来,然后删除info模块的InfoApplication类,新建一个普通类,我这边新建了一个controll类 ,代码如下

如果在书写的时候返现找不到@RestController注解,在start模块中增加@ComponentScan("com.example")扫描

 接下来我们就可以在start中的startApplication类上启动啦,启动后,浏览器中http://localhost:8080/hello 就可以访问到输出的hello啦

<think>嗯,用户想了解如何在Spring Boot中创建多模块项目。我之前整理过相关的资料,需要结合引用中的内容来回答。首先,我需要回忆一下多模块项目的基本结构。通常,父模块作为聚合模块,管理子模块的依赖和配置。子模块可以是核心模块、业务模块或者启动模块。 根据引用[1]提到的步骤,创建父工程是关键,使用Maven或Gradle来聚合子模块。父pom.xml需要设置packaging为pom,并声明子模块。然后添加子模块,比如common、service、web等。每个子模块都有自己的pom.xml,并继承父模块的配置。 引用[2]中提到不同模块类名相同导致启动失败的问题,解决办法是自定义BeanName生成器,并在启动类使用@ComponentScan指定。这点需要注意,可能在多模块中如果不同模块有相同类名的Bean会导致冲突,需要处理。 用户的问题是如何实现多模块项目,所以步骤应该是创建父工程、添加子模块、配置依赖关系、解决可能的问题。需要详细说明每个步骤,比如如何设置父pom,如何创建子模块,如何配置模块间的依赖,以及如何处理Bean名称冲突的问题。此外,代码示例也很重要,比如父pom的配置,子模块的示例,以及自定义BeanName生成器的代码。 另外,用户可能遇到的问题包括模块依赖无法正确引入,或者启动类无法扫描到其他模块的组件。需要提醒他们在父工程中管理公共依赖,子模块按需引入,同时注意组件扫描的范围。可能还需要提到启动类通常放在web模块,并正确使用@ComponentScan。 总结回答的结构应该是分步骤讲解,包括创建父工程、添加子模块、配置依赖、解决Bean冲突,并给出代码示例。最后生成相关问题,比如性能优化、依赖管理、组件扫描策略等。</think>### Spring Boot多模块项目实现步骤 #### 1. 创建父工程(聚合模块) 使用Maven/Gradle创建父模块,需设置`packaging`为`pom`,用于统一管理子模块的依赖和配置: ```xml <!-- pom.xml --> <groupId>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <modules> <module>common</module> <module>service</module> <module>web</module> </modules> ``` #### 2. 添加子模块 **核心步骤**: - 创建`common`模块(基础工具类) - 创建`service`模块(业务逻辑层) - 创建`web`模块(启动类与控制器) 每个子模块需在pom.xml中声明父工程: ```xml <!-- service/pom.xml --> <parent> <groupId>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> </parent> ``` #### 3. 配置模块依赖 在`web`模块中引入其他模块依赖: ```xml <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>common</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.example</groupId> <artifactId>service</artifactId> <version>${project.version}</version> </dependency> </dependencies> ``` #### 4. 解决类名冲突问题 当不同模块存在同名类时,需自定义Bean命名策略[^2]: ```java public class UniqueNameGenerator extends AnnotationBeanNameGenerator { @Override public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) { return definition.getBeanClassName(); } } // 在启动类添加注解 @ComponentScan(nameGenerator = UniqueNameGenerator.class) @SpringBootApplication public class WebApplication { public static void main(String[] args) { SpringApplication.run(WebApplication.class, args); } } ``` #### 5. 关键配置建议 - 将`spring-boot-starter-parent`作为父依赖 - 仅在启动模块保留`spring-boot-maven-plugin` - 通过`<dependencyManagement>`统一管理依赖版本
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值