Springboot(二)、子模块层级依赖
在上一章节中创建了基于 Maven 管理的多模块项目,这一节将介绍如何实现模块之间的依赖。
从图中可以看出 sdk 实体层会被 dao 层和 service 依赖,因为代码里会引用实体,同理 dao 层和 service 层又会被 server 依赖。serive 层主要是定义一些接口,并不进行具体的实现,具体的实现是在 server 模块,用过 dubbo 的都知道服务消费端和提供端会引用一个公共的 service 接口。而在某些项目中也有人直接将公共 service 接口定义在了 sdk 中,本项目为了更清晰点将其拆开了。
技术选用
- idea2020
- mybatis
- mysql
- navicat
- maven
- springboot
子模块层级依赖
首先我们将根据上图来实现子模块之间的层级依赖。
(1)在 dao 模块 pom 文件中添加 sdk 依赖
在标签下添加代码:
<dependency>
<groupId>com.to.jing</groupId>
<artifactId>sdk</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
pom 文件如下图,后续随着依赖的增多将不再对 pom 文件截图。
(2)在 service 模块 pom 文件中添加 sdk 依赖
在标签下添加代码:
<dependency>
<groupId>com.to.jing</groupId>
<artifactId>sdk</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
(3)在 server 模块 pom 文件中添加 service 和 sdk 依赖
在标签下添加代码:
<dependency>
<groupId>com.to.jing</groupId>
<artifactId>service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.to.jing</groupId>
<artifactId>dao</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
整合 mybatis
添加完子模块层级依赖后,我们写个完整的项目 Helloword 来测试下,同时也对各个模块的功能划分和代码的编写有个清晰的认识。。
- 添加库表结构
先创建数据库 course,在添加用户表 user,插入一条数据。代码如下:
然后在 dao 层引入 mybatis 和 mysql 依赖。<!-- mybatis依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${course.mybatis.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${course.mysql.connection.version}</version> </dependency>
- sdk 模块中创建 user 实体
sdk 模块中主要存放实体,新建包 com.to.jing.course.sdk.domain,在包下新建 User.java 实体。
然后在 resources 下新建目录 mybatis/sqlmap,在目录下新建 UserMapper.xml 文件。
<?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.to.jing.course.dao.UserDao">
<select id="findUserById" parameterType="java.lang.Integer" resultType="User">
select * from user where id = #{id};
</select>
</mapper>
完整项目结构如下:
- service 模块创建服务接口
service 下主要定义一些公共服务接口,用于服务的发布。新建包 com.to.jing.course.service,在包下新建接口 UserService。
注意,这里 @Autowired 会在 idea 中显示一个波浪线,因为 springboot 后面不推荐使用这种注入方式,暂时先不管。
修改上一节 HelloController 中的代码为:
此时运行 AppServer 显示如下报错:
原因为 jar 版本冲突了,我们可以去到 server 模块 pom 文件下通过快捷键 ctrl+alt+shift+u,查看如下图。
红色就证明存在 jar 冲突,所以我们这里在父模块 pom 文件中替换 springboot 的版本从 2.3.5.RELEASE 到 2.1.5.RELEASE。
<course.spring-boot.sersion>2.1.5.RELEASE</course.spring-boot.sersion>
再次启动 AppServer,在浏览器中查看 http://localhost:8080/,结果如下图。
源码地址
https://github.com/ToJing/spring-boot-course tagV1.1
博客地址
http://m.loveplaycat.club:8080/articles/2020/11/09/1604914780246.html
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于