Skip to main content

Speech-to-Text and Text-to-Speech with Spring AI: Build a Meeting-Minutes Generator

Spring AI's audio API is its least-covered corner. Build a meeting-minutes generator on Spring AI 2.0.2: transcribe a recording, split files over the 25 MB upload limit at a silence, turn the transcript into typed action items with entity(), read them back with text-to-speech, and price an hour of meetings. Run against a local mock server and a stub chat model, with the failures captured.

Top 30 JUnit 6 and Mockito Interview Questions (2026)

30 JUnit 6 and Mockito 5 interview questions answered with tests that were actually run on JUnit 6.1.3, Mockito 5.24.0 and JDK 25: lifecycle, extensions, parameterized tests, mocks vs spies, verify, static mocking and flaky tests, each with captured output.

AssertJ Complete Guide: Soft Assertions, Recursive Comparison and Custom Assertions

A beginner-first AssertJ 3.27.7 guide with real failure messages: fluent assertions, collections, exceptions, soft assertions and their traps, recursive comparison for DTOs, and custom assertions both hand-written and generated (including the javax.annotation fix the 2019 generator plugin needs on JDK 25). Every output is captured from a runnable companion module.

JFR In-Process Data Redaction (JEP 536): Safe Flight Recordings in Production

JDK 27's JEP 536 makes Java Flight Recorder redact command-line arguments, environment variables and system properties before they reach a recording. We plant seven fake secrets, record on JDK 25 and JDK 27, and find that defaults catch three and miss four. Includes custom filters, filter files, the glob and plus-prefix traps, and a CI leak scanner.