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.

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.

HTTP Interfaces in Spring Boot 4: Say Goodbye to Boilerplate
· 19 min read

HTTP Interfaces in Spring Boot 4: Say Goodbye to Boilerplate

Learn how HTTP interfaces let you define declarative HTTP clients in Spring Boot, and discover how Spring Framework 7 eliminates the configuration boilerplate with @ImportHttpServices.

Java
· 22 min read

Stop NullPointerExceptions Before Production with Spring Boot 4's Null Safety

Discover how Spring Boot 4 and JSpecify annotations catch NullPointerExceptions at compile-time instead of runtime. Learn to implement @NullMarked and @Nullable for bulletproof Java code with practical examples.

Spring Boot 4's Bean Registrar: A Cleaner Way to Register Beans Programmatically
· 12 min read

Spring Boot 4's Bean Registrar: A Cleaner Way to Register Beans Programmatically

Learn how Spring Boot 4's new BeanRegistrar interface simplifies programmatic bean registration in Spring Framework 7. This tutorial demonstrates dynamic bean creation based on environment properties, conditional registration with complex logic, and performance optimization techniques. Discover when to use BeanRegistrar vs @Bean annotations with practical code examples and testing strategies...

Testing Spring REST APIs with RestTestClient: A Complete Guide
· 22 min read

Testing Spring REST APIs with RestTestClient: A Complete Guide

Explore the new Rest Test Client in Spring Framework 7, a modern replacement for RestTemplate that provides a fluent API for testing REST APIs with improved type safety and better integration with modern testing practices.

Building MCP Clients with Spring AI: Augmenting LLMs with Custom Context
· 14 min read

Building MCP Clients with Spring AI: Augmenting LLMs with Custom Context

Learn how to build MCP (Model Context Protocol) clients using Spring AI to augment Large Language Models with custom context and functionality for your applications.

Evolving your API without Versioning in GraphQL
· 15 min read

Evolving your API without Versioning in GraphQL

Explore modern approaches to API versioning in GraphQL, including schema evolution strategies, deprecation patterns, and best practices for maintaining backward compatibility while evolving your API.