背景
項目為什么需要用多模塊?springmvc難道還不夠我們平常使用嗎倒信?
- 設計模式真言:“高內(nèi)聚鳖悠、低耦合”乘综,springmvc項目卡辰,一般會把項目分成多個包:controller、service反砌、dao于颖、util等森渐,但是隨著項目的復雜性提高冒晰,想復用其他一個模塊的話,因為是包的形式耐齐,剝離出來會比較困難埠况,耦合性有點強辕翰,常用的方法就是復制代碼修改喜命,但是這樣會做很多無用功與增加出錯幾率河劝。
- springboot多模塊簡單來說赎瞎,就是把按包分模塊的模式务甥,借助maven升級到jar的方式缓呛,抽象性更加強了哟绊,假如jar再升級到到war或者多個集合jar票髓,就成微服務了,在多模塊jar模式下可以將某個jar拿出來對外共用以故,能大大提高代碼復用率與開發(fā)效率怒详。
<center>話不多說開搞</center>
springboot多模塊創(chuàng)建
父模塊創(chuàng)建
- 打開idea:選擇Create New Project
或者去官網(wǎng)創(chuàng)建(跟idea船艦項目是一樣的昆烁,我這里用的是idea)
- 然后選擇Spring Initializr
- 點擊next之后—>基本設置
- 點擊next之后->添加依賴
- 點擊next之后->選擇項目地址
- 點擊finish之后
子模塊創(chuàng)建
- 父項目名稱->右鍵->new->moudle
- 點擊Spring Initializr(選擇合適jdk版本)->next
- 點擊next之后->設置Maven Project 而不是跟父項目相同的Maven Pom
- 點擊next之后->添加依賴
- 點擊next->選擇確認項目地址
- 點擊finish完成
然后再創(chuàng)建一個子模塊multi-core 過程跟multi-controller一樣拦盹,我這里就省略了薪鹦。我們這里就暫時創(chuàng)建兩個子模塊掌敬。
- 項目創(chuàng)建完成整體結(jié)構(gòu)圖
注:由于程序的主入口是multi-controller 所有 multi-core里面 application.properties MultiCoreApplication.java 文件都刪除了
修改pom文件
1.修改父項目pom-修改完成如下所示(有注釋)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.tinygray</groupId>
<artifactId>multi-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>multi-parent</name>
<description>Demo project for Spring Boot</description>
<!--修改父項目的打包方式為pom-->
<packaging>pom</packaging>
<!--添加子模塊到父項目-->
<modules>
<module>multi-controller</module>
<module>multi-core</module>
</modules>
<!--依賴版本統(tǒng)一管理-->
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--父項目這里的依賴可以用到子項目的 通用的-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<!--解決非web模塊 test打包報錯問題 1.4.2.RELEASE版本可以-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<version>2.0.1.RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
2.修改子項目pom
- multi-controller
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>multi-controller</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>multi-controller</name>
<description>Demo project for Spring Boot</description>
<!--引入父項目 替換掉之前的springboot父項目(spring-boot-starter-parent)-->
<parent>
<artifactId>multi-parent</artifactId>
<groupId>com.tinygray</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!-- <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!– lookup parent from repository –>
</parent>-->
<dependencies>
<!--引入multi-core模塊-->
<dependency>
<groupId>com.tinygray</groupId>
<artifactId>multi-core</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.tinygray.multicontroller.MultiControllerApplication</mainClass>
<layout>JAR</layout>
</configuration>
</plugin>
</plugins>
</build>
</project>
- multi-core
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>multi-core</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>multi-core</name>
<description>Demo project for Spring Boot</description>
<!--引入父項目 替換掉之前的springboot父項目(spring-boot-starter-parent)-->
<parent>
<artifactId>multi-parent</artifactId>
<groupId>com.tinygray</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!-- <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!– lookup parent from repository –>
</parent>-->
<dependencies>
<!--引入該模塊需要的依賴-->
</dependencies>
</project>
springboot多模塊創(chuàng)建完成之后驗證啟動
驗證
你如何知道你的多模塊項目搭建完成并能成功啟動了呢?
看下圖:
[圖片上傳失敗...(image-312d84-1616128934984)]
出現(xiàn)以上圖片結(jié)果就是你的多模塊項目創(chuàng)建完成了并可以啟動了
啟動
- 找到啟動類
- 執(zhí)行啟動類
- 執(zhí)行成功
[圖片上傳失敗...(image-be7833-1616128934984)]
- 瀏覽器打開
http://localhost:8080
- 出現(xiàn)以上結(jié)果表示多模塊項目已經(jīng)搭建完成了
寫一個測試接口訪問
- 創(chuàng)建兩個java文件(一個實體類User一個UserController)
- User.java池磁、UserController.java文件內(nèi)容-很簡單一個測試接口
- 出現(xiàn)以上結(jié)果就表示測試成功了。
結(jié)束語
如果幫到你的話地熄,記得點贊評論轉(zhuǎn)發(fā)哦