Skip to content

feat: add four dependency-based example modules (kafka, mail, elasticsearch, flyway) - #46

Merged
houko merged 2 commits into
mainfrom
feat/more-examples-2
Sep 13, 2026
Merged

feat: add four dependency-based example modules (kafka, mail, elasticsearch, flyway)#46
houko merged 2 commits into
mainfrom
feat/more-examples-2

Conversation

@houko

@houko houko commented Sep 13, 2026

Copy link
Copy Markdown
Owner

概述

在上一轮「无需外部服务的示例」基础上,补齐 4 个带真实第三方依赖的示例模块。每个模块的运行时依赖都已明确(Kafka / SMTP / Elasticsearch / MySQL),但测试全部可离线跑通,不依赖 Docker 或外部服务,因此 CI 上 mvn clean install 依然能稳定通过。

新增模块

模块 演示内容 运行时外部服务 测试方案
kafka KafkaTemplate 生产 + @KafkaListener 消费 Kafka @EmbeddedKafka 内嵌 broker
mail SimpleMailMessage / MimeMessageHelper 发邮件 SMTP 服务器 GreenMail 内嵌 SMTP
elasticsearch Spring Data Elasticsearch 索引 + 仓储检索 Elasticsearch 与 mongodb 风格一致,不带自动化测试
flyway db/migration 迁移脚本 + JdbcTemplate 读取 MySQL 内嵌 H2

测试

全量 mvn clean install 通过,30 个模块全部 SUCCESS。本次新增 5 个测试(kafka 1 + mail 2 + flyway 2),修复了 1 个 flaky 测试:

  • actuator 健康检查测试:原先的 DiskSpaceRatioHealthIndicator 依赖真实磁盘剩余空间,磁盘快满时 /actuator/health 会返回 503 导致测试随机失败。现把阈值改为可配置(actuator.disk-space-ratio.threshold),测试里设成 0 使判定确定性地为 UP。

Spring Boot 4 下的注意点

  1. Kafka / Flyway 自动配置被拆成独立 starter:直接引 spring-kafkaflyway-core 拿不到自动配置,必须用 spring-boot-starter-kafka / spring-boot-starter-flyway
  2. flyway 保留 DataSource 后需同时排除 JPA 自动配置:除 HibernateJpaAutoConfiguration 外还要排除 DataJpaRepositoriesAutoConfiguration,否则 core 传递引入的 spring-data-jpa 会尝试创建 entityManagerFactory
  3. GreenMail 测试需关掉 SMTP AUTHspring.mail.properties.mail.smtp.auth/starttls 设 false 并清空用户名密码,且 purgeEmailFromAllMailboxes() 抛受检异常需声明。

@houko
houko merged commit 8a94ccf into main Sep 13, 2026
3 checks passed
@houko
houko deleted the feat/more-examples-2 branch September 13, 2026 17:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant