先介绍下背景,项目为何须要用多模块?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 「软件老王」,若是以为还能够的话,关注下呗!后续更新秒知!若有补充,欢迎留言或同名公众号交流,多谢!