一、工具环境准备
- 开发工具:idea
- 系统环境:mac os
- jdk版本:1.8
二、搭建步骤
2.1、创建父工程
打开idea开发工具,选择菜单 File-> New -> Project,然后选择下图的1选项(表示创建SpringBoot项目),然后按照下图填写好项目信息即可
点击Next,然后就是选择项目依赖,这一步主要是选择项目依赖的包,创建完之后自动导入选择的依赖项,我们这里先不选,直接finish即可
最终生成的文件结构如下所示:
然后依次删除无用的.mvn目录、src目录、.mvnw和mvnw.cmd文件,只留下.ignore和pom.xml文件即可,最终文件结构如下:
2.2、创建子模块
右键项目-> New -> Module
选择Maven,然后点击Next, 依次填写好以下项目信息,然后点击Finish
然后按照同样的步骤创建pro-dao、pro-web两个maven工程,最终文件结构如下,
2.3、运行项目
在pro-web项目创建入口类和Controller进行测试
package com.dongci777.pro.web.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: zxb
* @Date : 2021/11/13 5:40 下午
*/
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
return "hello world";
}
}
启动入口类,然后访问localhost:8080/test
说明项目正常启动,到此项目分层建好了,接下来就是配置模块间的依赖关系
2.4、配置模块间依赖关系
依赖关系:
- pro-biz 依赖pro-dao
- pro-web 依赖pro-biz
在父项目文件的pom.xml文件中声明所有子模块依赖
<!--定义依赖的版本-->
<properties>
<java.version>1.8</java.version>
<pro.version>0.0.1-SNAPSHOT</pro.version>
</properties>
<!--声明全部的项目依赖-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.dongci777.pro</groupId>
<artifactId>pro-biz</artifactId>
<version>${pro.version}</version>
</dependency>
<dependency>
<groupId>com.dongci777.pro</groupId>
<artifactId>pro-dao</artifactId>
<version>${pro.version}</version>
</dependency>
<dependency>
<groupId>com.dongci777.pro</groupId>
<artifactId>pro-web</artifactId>
<version>${pro.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
同样,需要在pro-biz层添加pro-dao的依赖,pro-web层添加pro-biz的依赖
pro-biz层pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<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-mybatis-mul</artifactId>
<groupId>com.dongci777</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.dongci777.pro</groupId>
<artifactId>pro-biz</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.dongci777.pro</groupId>
<artifactId>pro-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
pro-web层pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<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-mybatis-mul</artifactId>
<groupId>com.dongci777</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.dongci777.pro</groupId>
<artifactId>pro-web</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.dongci777.pro</groupId>
<artifactId>pro-biz</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
2.5、web层调用biz层方法测试
首先在pro-biz层创建service接口和实现方法
然后在pro-web层的TestController层注入刚才的接口类,测试其test()方法
package com.dongci777.pro.web.controller;
import com.dongci777.pro.biz.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: zxb
* @Date : 2021/11/13 5:40 下午
*/
@RestController
public class TestController {
@Autowired
private DemoService demoService;
@GetMapping("/test")
public String test() {
return demoService.test();
}
}
再次运行项目,发现启动失败,报如下错误:
原因是找不到我们在pro-biz层创建的DemoService类,我们需要在ProWebApplication入口类中增加包扫描
重新运行项目,下面表示启动成功!
访问http://localhost:8080/test,如果出现下面就表示成功!
2.6、集成Mybatis
在父项目中的pom.xml文件中加入mybatis、lombok依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
在pro-dao层pom.xml文件中添加增加mysql-connector依赖
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
</dependencies>
在pro-dao层新建实体类层(entity)、mapper层、以及mapper.xml文件
@Data
public class User {
private Integer id;
private String name;
}
@Repository
public interface UserMapper {
User selectById(Integer id);
}
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dongci777.pro.dao.mapper.UserMapper">
<select id="selectById" parameterType="integer" resultType="com.dongci777.pro.dao.entity.User">
select *
from user
where id = #{id}
</select>
</mapper>
增加application.propertites配置文件
spring.datasource.url=jdbc:mysql://你的数据库ip地址:端口号/pro?useUnicode=true&characterEncoding=utf-8
spring.datasource.name=数据库用户名
spring.datasource.password=数据库密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.dongci777.pro.dao.entity
最后需要在主类上加入mapper扫描
最后重新启动项目,然后访问 http://localhost:8080/test
三、总结
多模块项目不仅方便后期维护,而且有利于后续微服务化,在此结构还可以扩展common层(公共组件层)server层(例如dubbo对外提供的服务)