SpringBoot Mult Modular 是一个基于SpringBoot构建的一个多模块,可以在此基础上搭建前后台管理系统。根据不同的代码进行分层,可以很好的管理代码和维护,最后附上源代码。
本博文适合于有一定IDEA使用和对SpringBoot有一定了解的人群,大神请绕过。
1、在IDEA上新建一个Maven
项目。
2、删除src
目录,留下pom.xml和*.iml文件即可
3、在父工程项目的基础新建Module
,依然是选择Maven
项目。
4、具体模块可以参考下图,和查看源码。
该项目主要分为五大模块分别为
project-service
、project-core
模块。project-service
、project-core
模块。project-dao
模块。pom.xml
文件,新增 springboot parent
,代码如下
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.wip.kyriecaogroupId>
<artifactId>springboot-api-mult-modularartifactId>
<packaging>pompackaging>
<version>1.0-SNAPSHOTversion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.0.3.RELEASEversion>
parent>
<modules>
<module>project-frontmodule>
<module>project-servicemodule>
<module>project-daomodule>
<module>project-coremodule>
<module>project-adminmodule>
modules>
project>
springboot parent
对构建SpringBoot工程spring系列和一些常用的第三方包进行了管理。我们只需要将其作为parent即可不用指定版本号来引入spring和已经加入管理的第三方包,SpringBoot这么做,也是为了解决每三方包之间的版本冲突问题。
project-front
工程添加spring依赖修改project-front/pon.xml
,增加 spring web starter
、project-core
和project-service
工程的依赖。代码如下
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springboot-api-mult-modularartifactId>
<groupId>com.wip.kyriecaogroupId>
<version>1.0-SNAPSHOTversion>
parent>
<modelVersion>4.0.0modelVersion>
<artifactId>project-frontartifactId>
<packaging>jarpackaging>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>com.wip.kyriecaogroupId>
<artifactId>project-coreartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.wip.kyriecaogroupId>
<artifactId>project-serviceartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
dependencies>
project>
因为这是一个web工程,所以需要增加web starter
的依赖,web starter引入了构建一个web工程的jar包。
project-admin
工程添加spring依赖,同project-front
一样。project-service
工程添加spring-context
和project-dao
工程的依赖包。修改project-service/pom.xml
文件,如下
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springboot-api-mult-modularartifactId>
<groupId>com.wip.kyriecaogroupId>
<version>1.0-SNAPSHOTversion>
parent>
<modelVersion>4.0.0modelVersion>
<artifactId>project-serviceartifactId>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<scope>providedscope>
dependency>
<dependency>
<groupId>com.wip.kyriecaogroupId>
<artifactId>project-daoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
dependencies>
project>
这里的spring-context
包的scope
为provided
,因为这个包在front的springboot web starter
中已经被引入了。
我们之所以需要引入这个包,是因为我们需要使用@Service、@Autowired等Spring提供的注解。如果你还需要用到别的第三方包,也可以直接引入。
这里需要新建两个启动类一个是前台一个是后台,分别是 AdminApplication.java
、FrontApplication
,放在包com.wip.kyriecao
下。我们这里新建Controller
类IndexAdminController
、IndexFrontApplication
放在com.wip.kyriecao.controller
中。
/**
* 后台项目启动类
* @author KyrieCao
* @date 2019/1/20 15:23
*/
@SpringBootApplication
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class);
}
}
/**
* 前台项目启动类
* @author KyrieCao
* @date 2019/1/20 15:25
*/
@SpringBootApplication
public class FrontApplication {
public static void main(String[] args) {
SpringApplication.run(FrontApplication.class);
}
}
/**
* 后台首页控制器
* @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();
}
}
/**
* 前台首页控制器
* @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
这个模块主要是封装一些这个项目核心通用的东西,根据实际情况写。
参考:https://blog.csdn.net/u012627861/article/details/83030914
parent
中引入springboot parent
来继承springboot
的包管理springboot
提供的web starter
项目源码:https://github.com/caozongpeng/spring-boot-mult-modular