# spring-boot-mult-modular
**Repository Path**: ypwx/spring-boot-mult-modular
## Basic Information
- **Project Name**: spring-boot-mult-modular
- **Description**: 一个基于SpringBoot的多模块项目,可以在此项目快速构建前后管理系统
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-23
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 项目介绍
SpringBoot Mult Modular 是一个基于SpringBoot构建的一个多模块,可以在此基础上搭建前后台管理系统。根据不同的代码进行分层,可以很好的管理代码和维护。
如果觉得此项目可以帮你,请帮忙`Star`
#### 具体模块

该项目主要分为五大模块分别为
* **project-admin** 项目后台模块
* **project-front** 项目前台模块
* **project-core** 项目核心模块
* **project-dao** 数据持久层
* **project-service** 服务层
模块之间依赖关系
project-admin 依赖于`project-service`、`project-core`模块。
project-front 依赖于`project-service`、`project-core`模块。
project-service 依赖于 `project-dao`模块。
#### 加入jar依赖
* 在父工程项目中整合SpringBoot的依赖管理
修改父工程 `pom.xml`文件,新增 `springboot parent`,代码如下
```xml
4.0.0
com.wip.kyriecao
springboot-api-mult-modular
pom
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
project-front
project-service
project-dao
project-core
project-admin
```
###### 说明
`springboot parent` 对构建SpringBoot工程spring系列和一些常用的第三方包进行了管理。我们只需要将其作为parent即可不用指定版本号来引入spring和已经加入管理的第三方包,SpringBoot这么做,也是为了解决每三方包之间的版本冲突问题。
* **给`project-front`工程添加spring依赖**
修改`project-front/pon.xml`,增加 `spring web starter`、`project-core`和`project-service`工程的依赖。代码如下
```xml
springboot-api-mult-modular
com.wip.kyriecao
1.0-SNAPSHOT
4.0.0
project-front
jar
org.springframework.boot
spring-boot-starter-web
com.wip.kyriecao
project-core
1.0-SNAPSHOT
com.wip.kyriecao
project-service
1.0-SNAPSHOT
```
###### 说明
因为这是一个web工程,所以需要增加`web starter` 的依赖,web starter引入了构建一个web工程的jar包。
* **给`project-admin`工程添加spring依赖,同`project-front`一样**。
* **给`project-service`工程添加`spring-context`和`project-dao`工程的依赖包**。
修改`project-service/pom.xml`文件,如下
```xml
springboot-api-mult-modular
com.wip.kyriecao
1.0-SNAPSHOT
4.0.0
project-service
org.springframework
spring-context
provided
com.wip.kyriecao
project-dao
1.0-SNAPSHOT
```
###### 说明
这里的`spring-context`包的`scope`为`provided`,因为这个包在front的`springboot web starter`中已经被引入了。
我们之所以需要引入这个包,是因为我们需要使用@Service、@Autowired等Spring提供的注解。如果你还需要用到别的第三方包,也可以直接引入。
#### 增加启动类
这里需要新建两个启动类一个是前台一个是后台,分别是 `AdminApplication.java`、`FrontApplication`,放在包`com.wip.kyriecao`下。我们这里新建`Controller`类`IndexAdminController`、`IndexFrontApplication`放在`com.wip.kyriecao.controller`中。
* AdminApplication.java内容如下
```java
/**
* 后台项目启动类
* @author KyrieCao
* @date 2019/1/20 15:23
*/
@SpringBootApplication
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class);
}
}
```
* FrontApplication.java内容如下
```java
/**
* 前台项目启动类
* @author KyrieCao
* @date 2019/1/20 15:25
*/
@SpringBootApplication
public class FrontApplication {
public static void main(String[] args) {
SpringApplication.run(FrontApplication.class);
}
}
```
* IndexAdminController内容如下
```java
/**
* 后台首页控制器
* @author KyrieCao
* @date 2019/1/20 21:33
*/
@RestController
public class IndexAdminController {
@Autowired
private IndexService indexService;
@RequestMapping("/admin")
public String index() {
return "Welcome to Admin, Dao名称为:" + indexService.getDaoName();
}
}
```
* IndexFrontController内容如下
```java
/**
* 前台首页控制器
* @author KyrieCao
* @date 2019/1/20 21:35
*/
@RestController
public class IndexFrontController {
@Autowired
private IndexService indexService;
@RequestMapping("/index")
public String index() {
return "Welcome to Front, Dao名称为:" + indexService.getDaoName();
}
}
```
省略service和dao的代码,就只是返回一个字符串,具体可以查看源码,最后会附上源码。
到这里,SpringBoot的Maven多模块项目搭建完了。启动分别运行`AdminApplication.java`、`FrontApplication.java`的main方法即可。

说一下`project-core`这个模块主要是封装一些这个项目核心通用的东西,根据实际情况写。
#### 总结
* 搭建一个Maven多模块工程
* 在`parent`中引入`springboot parent` 来继承`springboot`的包管理
* web工程中引入`springboot`提供的`web starter`
* 在非web工程引入自己需要的包,如果包已经在front中引入,那么修饰scope为provided。