当前位置: 首页 > news >正文

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是最简单的方法。

结语:

最后的最后,感谢大家观看到最后,如果对你有帮助,请一键三连,点赞,关注(拜托了),收藏,你的支持就是我最大的鼓励,持续更新对你有帮助的知识!

http://www.jsqmd.com/news/399499/

相关文章:

  • 中央气象局-MICAPS4客户端
  • SciPy 稀疏矩阵
  • 题解 NOISG2026 Prelim
  • 兰溪民间流传的故事《门神的来历:一段被误会的皇家轶事》
  • AngularJS Service详解
  • [兰溪民间故事]镬灶老爷的来历:一段充满烟火气的民间传说
  • DOM Node:理解与操作网页元素的核心
  • 画质天花板追觅AI电视,春晚出圈真相:Dreamind Pro AI引擎太能打
  • AI应用架构师分享:传统数据评估已过时,AI视角重新定义评估
  • 医疗场景Agentic AI提示设计:提示工程架构师的方法
  • 大数据背景下社交网络分析的安全与隐私问题
  • 多语言代码生成AI Agent:LLM在软件开发中的应用
  • 260218
  • 天虹提货券回收居然这么香,闲置卡秒变零花钱 - 京顺回收
  • [bash]:BASH中的变量——可先用后定义
  • 如何避免独立开发者最常见的商业失误:一份实战思考清单
  • WebForms 简介
  • SQL AVG() 函数详解
  • Vue3 组合式 API 深入解析
  • ABC446 解题报告
  • 2026如何做好AI营销推广?国内特色GEO服务商盘点 - 品牌2025
  • 一个老人在湖南老家是公职人员已经退休了,如果把户口转移到深圳了,那么他在原来单位每年的七个节日,一个生日的福利还会少吗?为什么?
  • C++ 类 对象
  • AI获客新时代:多维度GEO服务商矩阵解析,适配不同企业营销需求 - 品牌2025
  • python基于大数据的森林环境监测系统
  • sigmoid函数中想到的多图作图技巧
  • DOM Node
  • trae changelog
  • 2026.2.21
  • 《人月神话》