Skip to main content

Spring Security 7.1 JWT Authentication: The Complete Guide (Spring Boot 4.1)

A three-part guide to JWT authentication on Spring Security 7.1 and Spring Boot 4.1, written to be useful whether you have never issued a token or already run one in production. Part 1 starts from zero: what a token is, what is inside it, the two paths through the application, and the smallest configuration that verifies one. Part 2 opens the filter chain — writing the OncePerRequestFilter by hand, where it goes, what really decides 401 versus 403, why a permitAll() login endpoint still returns 403 with CSRF on, and how to choose a signing algorithm. Part 3 is everything the defaults do not check.

Spring AI 1.x to 2.0: The Migration Guide (What Breaks, and What Breaks Silently)

A complete Spring AI 1.x to 2.0 migration guide, verified against Spring AI 2.0.0 on Spring Boot 4.1. Boot 4 is mandatory and Jackson moves to 3. internalToolExecutionEnabled and toolNames are removed outright, not renamed. Chat memory becomes stricter: 2.0 removes the remaining default-ID and builder-based configuration paths, while explicit per-request conversation IDs — introduced during the 1.x line — become the only safe migration target. Plus the changes that produce no compile error at all.

Spring gRPC with Spring Boot 4: A First-Class Starter, and the Failures Nobody Warns You About

Spring Boot 4 promotes gRPC to a first-class starter. A beginner-to-advanced guide: all four call types, then the failures whose error messages point somewhere other than their cause — the 4 MB limit and which side enforces it, the absent default deadline, cancellation that never interrupts your thread, UNKNOWN statuses, and the in-process test transport that cannot enforce message size limits at all.

Exactly-Once with Spring Kafka on Boot 4: Idempotent Producers and Transactions

A beginner-to-advanced guide to exactly-once semantics with Spring Kafka on Spring Boot 4.1 — idempotent producers, transactions, and read-process-write. Verified against a live broker: the acks=1 setting that silently disables idempotence, the transaction markers that break offset arithmetic (but not consumer lag), the random transactional.id that defeats fencing entirely, the database boundary Kafka cannot cross, and what a transaction actually costs.

Generational ZGC on JDK 25: Benchmarks vs G1 (Beginner to Advanced)

A beginner-to-advanced guide to Generational ZGC on JDK 25 — the first LTS where it is the only ZGC. Colored pointers, load and store barriers, and a measured comparison against G1: ZGC's p99.9 of 1.4 ms vs G1's 95.2 ms, 1.5 ms of total freeze time vs 1.14 s, plus the failure modes and throughput costs nobody charts — allocation stalls, disabled compressed oops, and the promotion crossover where ZGC wins throughput too.

Java Vector API (JEP 537): SIMD, Auto-Vectorization, Masks, and Real Benchmarks

A beginner-to-advanced guide to Java's Vector API (JEP 537, twelfth incubator in JDK 27). Start from what a CPU vector and SIMD actually are, see how HotSpot's C2 auto-vectorizes simple loops for free (with an experiment that proves it), learn when auto-vectorization silently gives up, then write real vector loops with species, the loopBound tail pattern, and masks for branchless control flow - including a JMH-measured 5.0x speedup on one masked-filter workload and 5.7x on a branchy brightness kernel, the exact machine those numbers came from, and a runnable companion repository.