一、创建父模块
1、首先在IDEA中使用Spring Initializr的方式创建一个springboot工程,具体过程:点击File—>New—>Project,在弹出的界面选择Spring Initializr,然后点击Next。 
2、由于默认的start.spring.io经常连接不上,可以换成阿里云的start.aliyun.com。在弹出的New Project界面输入Group与Artifact,一般遵守相应的规范(即GroupId为域.公司名,例如com.company,Artifact为项目名,例如testproject),然后点击Next。

3、父工程的Dependencies暂时不需要选择,根据后续实际情况引入即可,所以在这里直接点击Next进入到下一步。 
4、创建完的项目目录如下 
5、这时把没用的.mvn目录,src目录,HELP.md,mvnw还有mvnw.cmd都删除,最终只保留.gitignore和pom.xml,也可以保留README.md。现在的目录结构如下所示: 
二、创建子模块
以上是创建父模块,下面创建子模块:
1、在父模块的根目录blogtest上点右键,在弹出的框里选择New->Module 
2、选择Maven,点击Next 
3、填写Module,点击Finish。
4、我们已同样的步骤创建blog-front和blog-system模块。
blog-system 放的是系统公用的类和文件以及依赖,blog-system被blog-front模块和blog-back模块依赖。
blog-front 系统前台的应用。
blog-back系统后台应用。 
三、模块间依赖配置
1、现在我们的blog-back和blog-front模块还不能启动,因为它们没有添加spring-boot-starter依赖和启动类。现在我们将父模块中的spring-boot-starter删掉。在blog-system模块中添加如下依赖,然后刷新maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2、修改父模块的pom.xml代码
将文件中的如下代码删除
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
新增代码如下后刷新maven
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.hp</groupId>
<artifactId>blog-system</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
3、在blog-front和blog-back中添加blog-sytem依赖,刷新maven。
<!--引入System模块-->
<dependency>
<groupId>com.hp</groupId>
<artifactId>blog-system</artifactId>
</dependency>
4、在blog-front中新建包com.hp.blog,并新建启动类:BlogFrontApplication.java,代码如下:
@MapperScan("com.hp.**.mapper")
@SpringBootApplication
public class BlogFrontApplication {
public static void main(String[] args){
SpringApplication.run(BlogFrontApplication.class,args);
}
}
同样的方法在blog-back中建立包com.hp.blog和启动类BlogBackApplication.java,代码如下:
@MapperScan("com.hp.**.mapper")
@SpringBootApplication
public class BlogBackApplication {
public static void main(String[] args){
SpringApplication.run(BlogBackApplication.class,args);
}
}
(如果子模块下的pom.xml文件显示灰色并有删除线,我们需要大开设置,搜索maven,如下图所示,在忽略文件这里将忽略文件前的勾去掉,再刷新maven即可。)
5、最后我们刷新一下maven。
点击软件右上角的启动框,我们发现已经有BlogBackApplication和BlogFrontApplication启动方式了。但还有可以看到一个报错的启动方式BlogApplication,那是父模块的,我们不需要,点击Edit Configuration将其删除。  
删除后效果如下 
四、数据库依赖配置
1、我们分别在blog-front模块和blog-back模块的resources目录中新建application.yml和application-dev.yml文件。application.yml中的代码如下所示,这两个,模块的application.yml基本相同,只有端口号不同,application-dev.yml可以不用写代码。
#端口号配置blog-front和blog-back端口号要不相同
server:
port: 端口号
# SPRING PROFILES
spring:
profiles:
active: center-dev,dev
mybatis:
mapper-locations: classpath*:mapper
2、在blog-system的resources目录下新建application-center-dev.yml文件。里面主要放数据库连接的配置和其他front模块和back模块需要的公共配置。代码仅供参考,其中mybatis配置必须要有否则会找不到mapper文件:
spring:
datasource:
druid:
url: jdbc:mysql://xxx/blogtest?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 10000
testOnBorrow: true
testOnReturn: false
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
servlet:
multipart:
max-file-size: 50MB
max-request-size: 100MB
...
mybatis:
configuration:
map-underscore-to-camel-case: true
mapper-locations: classpath*:/mapper
现在分别启动blog-front和blog-back,发现已经可已成功启动了。项目目前的结构如下 
五、获取用户名测试
1、在 blog-system模块中新建com.hp.blog包,后再向blog包内新建mapper,service,和pojo包,再向resource目录中新建mapper文件夹。
向blog-front的blog包中新建controller包,现在项目结构如下: 
2、在mapper中书写Adminmapper类,pojo中书写实体类,service中书写AdminService类,blogfont中书写controller类。现在项目结构如下:

除AdminController 外其他代码我不展示,AdminController中的主要代码如下:
@Controller
public class AdminController {
@Resource
private AdminService adminService;
@RequestMapping("/getadmin")
@ResponseBody
public Admin getAdmin(){
Admin admin=adminService.getAdminById(3);
return admin;
}
}
3、重启blog-front项目。
如果有报错未能注入bean…mapper,请检查启动类上的注解:@MapperScan("com.hp..mapper"),和相关application.yml中的mapper扫描配置,或者*mapper.xml文件中的代码。
4、获取用户信息测试
成功项目启动,现在我们在浏览器里面访问测试,如下所示,可以看出成功获取到了用户数据: 
|