SpringBoot多模块项目(Multi-Modules)

如题所述

第1个回答  2022-07-18

经常看到GitHub上的一些官方demo,为了展示很多功能,项目是由多模块的形式组织的,基于maven构建的形式为根文件夹下有个pom.xml,每个功能文件夹下又有pom.xml。
刚开始傻傻不会用的时候,直接引入子文件夹下的pom.xml为maven项目。然后有需要看另一个功能又打开了一个子模块,因为IDE用的是idea,变成了多窗口。后来发现直接打开父模块接可以了,各个子模块可以在同一个窗口下切换和启动。

以下最简单的建一个多模块项目,为了学习微服务,将建两个springboot web的子模块,服务提供者provider和消费者consumer。
两个服务在同个idea窗口中开发和启动,测试调用consumer的服务,consumer内部会调用provider。

new Module - > spring initializr,分别新增artifactId为provider和consumer,放在springbootmodules目录之下:

因为两个SpringBoot项目都默认是8080端口,为了能同时启动,调整consumer的端口为8081,在consumer的application.properties中添加server.port=8081

在provider和consumer分别新增两个controller: ProviderController和ConsumerController,返回最简单的字符串。
ProviderController.java:

ConsumerController中为了调用provider( http://localhost:8081/provider ),使用了spring的RestTemplate做http客户端,多配置了RestTemplate的Bean

父pom.xml现在只有管理两个子模块的作用,可以抽取子模块统一的配置信息和依赖版本控制放父模块中管理。

父pom.xml:

子模块pom.xml,设置parent为springbootmodules:

使用mvn clean package命令,或点击idea maven窗口功能,把两个子模块打成jar包:

使用java -jar命令启动两个服务:

两个服务都正常启动,并且服务消费者consumer调用服务提供者provider正常:

相似回答
大家正在搜