SpringBoot整合Junit与Mybatis实战指南

 更新时间:2026年02月25日 09:50:14   作者:北极的代码  
这篇文章给大家介绍SpringBoot整合Junit与Mybatis实战指南,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

前言:前面我们学习完了SpringBoot的相关基础知识,以及多环境配置等等,下面我们基于SpringBoot,如何提高开发的效率,注重于代码的业务逻辑,整合Junit和Mybatis。整合就是把复杂的技术细节封装起来,让我们能专注于业务本身。就像我们不需要懂发动机原理也能开车一样。

整合Junit:

实际上我们仅仅是创建了一个SpringBoot项目,然后在测试类中测试。这样看起来似乎没有整合,正所谓“没有所谓的岁月静好,只是有人在为你负重前行”为我们负重前行的实际上是SpringBoot的自动配置功能。

spring-boot-starter-test

当我们创建 Spring Boot 项目时(无论是通过 start.spring.io 还是 IDEA 的 Spring Initializr),pom.xml 中会自动添加这个依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

这个start里面包含了什么:

<!-- spring-boot-starter-test 内部包含了: -->
<dependencies>
    <!-- 1. JUnit 5 (Jupiter) - 测试框架本身 -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
    </dependency>
    <!-- 2. Spring 测试支持 - 让JUnit能和Spring整合 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
    </dependency>
    <!-- 3. Spring Boot 测试支持 - @SpringBootTest等注解 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-test</artifactId>
    </dependency>
    <!-- 4. Mockito - 模拟对象 -->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
    </dependency>
    <!-- 5. AssertJ - 流畅断言 -->
    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
    </dependency>
    <!-- 还有其他测试工具... -->
</dependencies>

简单理解:

spring-boot-starter-test就相当于一个火锅全家桶,里面包含了所有的配料,菜,锅,我们只需要使用即可,而不需要手动的去下载安装这些配置。

创建SpringBoot的实际过程:

1.我们先创建一个项目,选择Spring Initializr,选择依赖

2.IDEA在背后,在pom文件中自动的添加对应的依赖配置,自动添加测试的starter,还自动生成测试目录和示例测试类。

关于这个自动生成的配置类:

@SpringBootTest  // 这已经是Spring整合JUnit的注解了
class ApplicationTests {  // 自动生成
    @Test  // JUnit 5的注解
    void contextLoads() {  // 一个简单的测试方法
        // 测试Spring容器能否启动}}

首先区分:

维度Application(主启动类)ApplicationTest(测试类)
角色项目启动入口测试入口
运行目的启动整个应用,对外提供服务验证代码是否正确
运行时机开发/生产环境运行只在测试时运行
生命周期长期运行(直到手动停止)短暂运行(几秒钟)
端口占用占用端口(如8080)不占用端口(或随机端口)
是否必须每个Spring Boot项目必须有一个可选,但建议有

@SpringBootTest的源码:

@SpringBootTest 的源码(简化版) @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @BootstrapWith(SpringBootTestContextBootstrapper.class) public @interface SpringBootTest { }

那我们为什么不用在测试类中写注解@Configuration配置类呢。

实际工作流程:

1. 你只写了这一行

@SpringBootTest
class UserServiceTest {
    @Autowired UserService userService;
}

 2. Spring 测试框架会这样做:
 扫描当前测试类所在的包及其子包
 查找 @SpringBootApplication 注解的类
加载这个类的配置(相当于执行了 SpringApplication.run())

 3. 找到了你的主启动类

@SpringBootApplication  // 这里包含了 @Configuration
public class Application {  public static void main(String[] args) SpringApplication.run(Application.class, args);    }}

4. 于是测试类就能使用主启动类的所有配置了

注意事项
如果测试类在SpringBoot启动类的包或子包中,可以省略启动类的设置,也就是省略classes的设定,如果不在这两者之间,我们可以手动的添加,

SpringBoot整合Mybatis:

1.重新创建一个项目,在创建的时候要选择对应的技术集:

2.在yml文件中设置数据源 :

注意事项!!!
SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC或在MySQL数据库端配置时区解决此问题

3.定义数据层接口于映射配置:

在接口上加上@Mapper注解,自动生成一个代理对象,这样我们就不需要自己再创建一个实现类了,简化操作。

4.定义一个Javabean

5.在测试类中注入接口,测试功能

关于代理对象:

Mapper生成的代理对象是在Spring容器中,我们在测试类使用时需要拿出来,使用@Autowired是最简单的方法。

到此这篇关于SpringBoot整合Junit与Mybatis实战指南的文章就介绍到这了,更多相关SpringBoot整合Junit与Mybatis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中的异步回调问题

    Java中的异步回调问题

    这篇文章主要介绍了Java中的异步回调问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 使用dom4j实现xml转map与xml转json字符串

    使用dom4j实现xml转map与xml转json字符串

    这篇文章主要为大家详细介绍了如何使用dom4j实现xml转map与xml转json字符串功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2024-11-11
  • Java将集合List转换成String字符串(或String转换成List)详解

    Java将集合List转换成String字符串(或String转换成List)详解

    今天在写项目的时候遇到一个问题,就是要把得到的一个集合转换成字符串,下面这篇文章主要给大家介绍了关于Java将集合List转换成String字符串(或String转换成List)的相关资料,需要的朋友可以参考下
    2023-06-06
  • Java8新特性之接口中的默认方法和静态方法

    Java8新特性之接口中的默认方法和静态方法

    这篇文章主要介绍了Java8新特性之接口中的默认方法和静态方法的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • SpringBoot整合Redis实现访问量统计的示例代码

    SpringBoot整合Redis实现访问量统计的示例代码

    本文主要介绍了SpringBoot整合Redis实现访问量统计的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Java命令行运行错误之找不到或无法加载主类问题的解决方法

    Java命令行运行错误之找不到或无法加载主类问题的解决方法

    这篇文章主要给大家介绍了关于Java命令行运行错误之找不到或无法加载主类问题的解决方法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • Java将Object转换为数组的代码

    Java将Object转换为数组的代码

    这篇文章主要介绍了Java将Object转换为数组的情况,今天在使用一个别人写的工具类,这个工具类,主要是判空操作,包括集合、数组、Map等对象是否为空的操作,需要的朋友可以参考下
    2022-09-09
  • 浅析Java进制转换、输入、命名问题

    浅析Java进制转换、输入、命名问题

    这篇文章主要介绍了Java进制转换、输入、命名问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 很详细的Log4j配置步骤

    很详细的Log4j配置步骤

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
    2008-11-11
  • JAVA如何转换树结构数据代码实例

    JAVA如何转换树结构数据代码实例

    这篇文章主要介绍了JAVA如何转换树结构数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论