先介紹下背景,項目爲何須要用多模塊?springmvc難道還不夠?html
(1)設計模式真言:「高內聚、低耦合」,springmvc項目,通常會把項目分紅多個包:controller、service、dao、util等,可是隨着項目的複雜性提升,想複用其餘一個模塊的話,由於是包的形式,剝離出來會比較困難,耦合性有點強,經常使用的方法就是複製代碼修改,可是這樣會作不少無用功與增長出錯概率。web
(2)springboot多模塊簡單來講,就是把按包分模塊的模式,藉助maven升級到jar的方式,抽象性更增強了,假如jar再升級到到war或者多個集合jar,就成微服務了( springcloud入門系列),在多模塊jar模式下能夠將某個jar拿出來對外共用,能大大提升代碼複用率與開發效率。spring
(1)新建springboot項目;設計模式
(2)在新建後的springboot項目中新建多個module;springboot
(3)修改pom文件以及刪除多餘的文件及文件夾。bash
(1)new->project架構
(2)next,名字改一下。mvc
(1)在springboot項目上點擊右鍵->new->moduleapp
其他方式跟上面的springboot方式同樣,再也不多說了。maven
(2)新建三個module:controller、service、dao,新建後的效果圖以下:
(1)springboot項目
總體刪除src文件夾。
(2)module模塊
將service和dao下面的application啓動類和對應配置文件application.yml/prpperty,一塊兒刪除了,cotroller模塊的不動。
根據springmvc架構,幾個module之間依賴順序 controller->service->dao
(1)修改springboot最外層pom.xml
這個是父pom.xml,用於加載一些全局的或者公共的jar包,以及配置打包。
此pom文件中,須要需改兩個地方:
一是修改打包模式爲pom;
二是新建modules標籤,將3個module增長進來。
以下:
<packaging>pom</packaging>
<modules>
<module>controller</module>
<module>service</module>
<module>dao</module>
</modules>
複製代碼
(2)修改cotroller的pom.xml文件
修改標籤爲本項目springboot項目的gav信息和依賴service的jar包信息。
<!--<parent>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-parent</artifactId>-->
<!--<version>2.1.6.RELEASE</version>-->
<!--<relativePath/> <!– lookup parent from repository –>-->
<!--</parent>-->
<parent>
<groupId>com.laowang</groupId>
<artifactId>lwmodul</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependency>
<groupId>com.laowang</groupId>
<artifactId>service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
複製代碼
(3)修改service的pom.xml文件
與controller相似,只是依賴改成dao。
<!--<parent>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-parent</artifactId>-->
<!--<version>2.1.6.RELEASE</version>-->
<!--<relativePath/> <!– lookup parent from repository –>-->
<!--</parent>-->
<parent>
<groupId>com.laowang</groupId>
<artifactId>lwmodul</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependency>
<groupId>com.laowang</groupId>
<artifactId>dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
複製代碼
(4)修改dao的pom.xml文件
只需修改parent,不須要再配置依賴了。
<!--<parent>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-parent</artifactId>-->
<!--<version>2.1.6.RELEASE</version>-->
<!--<relativePath/> <!– lookup parent from repository –>-->
<!--</parent>-->
<parent>
<groupId>com.laowang</groupId>
<artifactId>lwmodul</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
複製代碼
(5)啓動
在Cotroller模塊中使用啓動類ControllerApplication啓動,空項目的話,看到這一行就說明成功了。
Started ControllerApplication in 2.485 seconds (JVM running for 3.639)
複製代碼
(1)controller下面的application.property改下端口號(不更改的話默認是:8080)。
server.port=9000
複製代碼
(2)增長依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
複製代碼
在啓動類ControllerApplication增長一個標籤(@RestController)和一個請求方法(home())。
package com.laowang.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class ControllerApplication {
public static void main(String[] args) {
SpringApplication.run(ControllerApplication.class, args);
}
@RequestMapping("/")
public String home() {
return "i'm 軟件老王,歡迎光臨!";
}
}
複製代碼
I'm 「軟件老王」,若是以爲還能夠的話,關注下唄!後續更新秒知!若有補充,歡迎留言或同名公衆號交流,多謝!