Practical writing on Java, Spring, AI, and the craft of software engineering.

If you're building with Java and Spring (or trying to figure out where AI fits into your development workflow) you're in the right place. I write practical, beginner-friendly deep dives on Spring Boot, Spring AI, and software engineering fundamentals, collected here in chronological order.

Building a Spring Boot 4 REST API the Fast Way
· 19 min read

Building a Spring Boot 4 REST API the Fast Way

Learn how to build a REST API with Spring Boot 4 in minutes. This tutorial shows you how to create CRUD endpoints using Java records and the @RestController annotation.

Loading Resources in Spring Boot
· 19 min read

Loading Resources in Spring Boot

Learn how to load resources in Spring Boot using the Resource interface. This tutorial covers three approaches for loading files from the classpath, filesystem, and URLs.

Spring Security 7 Multi-Factor Authentication: Complete Tutorial with @EnableMultiFactorAuthentication
· 28 min read

Spring Security 7 Multi-Factor Authentication: Complete Tutorial with @EnableMultiFactorAuthentication

Learn how to implement multi-factor authentication (MFA) in Spring Boot 4 using Spring Security 7's new @EnableMultiFactorAuthentication annotation. Step-by-step tutorial with one-time token login and custom PIN codes.

Spring Boot
· 14 min read

Spring Boot 4 Modularization: Fix Auto-Configuration Issues After Upgrading

Upgraded to Spring Boot 4 and features stopped working? Learn how the new modular auto-configuration architecture affects your migration and how to fix common issues like the H2 console not appearing.

MockMvcTester vs RestTestClient: Which one Should You Use in Spring Boot 4?
· 23 min read

MockMvcTester vs RestTestClient: Which one Should You Use in Spring Boot 4?

A comparison of MockMvcTester and RestTestClient for testing Spring Boot web applications, exploring when to use each approach and their key differences.

Spring JMS Client: A Complete Guide to JmsClient in Spring Boot 4
· 17 min read

Spring JMS Client: A Complete Guide to JmsClient in Spring Boot 4

Master the Spring JMS Client with this complete Spring Boot 4 JmsClient tutorial. Learn when to choose JMS over Kafka, configure message conversion, and send messages using Spring's fluent API.

Spring Data AOT Repositories: Faster Startup and Build-Time Query Validation
· 15 min read

Spring Data AOT Repositories: Faster Startup and Build-Time Query Validation

Learn how Spring Data AOT Repositories move query processing from runtime to compile time, reducing startup times and memory usage, plus how to validate repository methods at build time.

What's New in Spring Framework 7 and Spring Boot 4
· 29 min read

What's New in Spring Framework 7 and Spring Boot 4

A comprehensive look at the new features in Spring Framework 7 and Spring Boot 4, including code examples and resources to help you get started

Native Retry Support in Spring Boot 4: No External Dependencies Required
· 28 min read

Native Retry Support in Spring Boot 4: No External Dependencies Required

Spring Boot 4 includes native retry support with @Retryable, RetryTemplate, and @ConcurrencyLimit. Learn how to add resilience without the spring-retry dependency.

Jackson 3 in Spring Boot 4: JsonMapper, JSON Views, and What's Changed
· 28 min read

Jackson 3 in Spring Boot 4: JsonMapper, JSON Views, and What's Changed

Learn how to use Jackson 3 in Spring Boot 4 with the new JsonMapper, immutable configuration, unchecked exceptions, and JSON Views with the hint() method.