Springboot(二)、子模块层级依赖

本贴最后更新于 1503 天前,其中的信息可能已经东海扬尘

Springboot(二)、子模块层级依赖

在上一章节中创建了基于 Maven 管理的多模块项目,这一节将介绍如何实现模块之间的依赖。

image.png
从图中可以看出 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 文件截图。
image.png
(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>

完整项目结构如下:

image.png

  • service 模块创建服务接口
    service 下主要定义一些公共服务接口,用于服务的发布。新建包 com.to.jing.course.service,在包下新建接口 UserService。

注意,这里 @Autowired 会在 idea 中显示一个波浪线,因为 springboot 后面不推荐使用这种注入方式,暂时先不管。
修改上一节 HelloController 中的代码为:


此时运行 AppServer 显示如下报错:
image.png
原因为 jar 版本冲突了,我们可以去到 server 模块 pom 文件下通过快捷键 ctrl+alt+shift+u,查看如下图。
image.png
红色就证明存在 jar 冲突,所以我们这里在父模块 pom 文件中替换 springboot 的版本从 2.3.5.RELEASE 到 2.1.5.RELEASE。

<course.spring-boot.sersion>2.1.5.RELEASE</course.spring-boot.sersion>

image.png
再次启动 AppServer,在浏览器中查看 http://localhost:8080/,结果如下图。

image.png

源码地址

https://github.com/ToJing/spring-boot-course tagV1.1

博客地址

http://m.loveplaycat.club:8080/articles/2020/11/09/1604914780246.html

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    943 引用 • 1460 回帖 • 3 关注
1 操作
TOJing 在 2020-11-10 09:59:32 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...