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.
Filtering by tag: Spring Framework
Spring Boot/
Getting Started with Error Handling in the RestClient
Learn best practices for error handling with Spring's RestClient, including global exception handlers, custom exceptions, Problem Detail responses, and built-in retry with resilience methods in Spring Framework 7.

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.

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.

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
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.

First-Class API Versioning in Spring Boot 4
Learn how to implement API versioning strategies in Spring Boot 4 applications, including best practices for managing backwards compatibility and evolution of your REST APIs.

Spring Boot 3.x Features: A Complete Guide (3.0 to 3.5)
Every major Spring Boot 3.x feature from 3.0 to 3.5—Java 17, GraalVM native images, virtual threads, Docker Compose, Testcontainers, and structured logging.

How to add Request Headers using HTTP Interfaces in Spring Boot 3
In this tutorial you will learn how to add a request header when using HTTP Interfaces in Spring Boot 3. This can be useful when you need to add a header to a single request or every single request. You will also learn how to view the headers that are...

Spring HTTP Interface Clients: Consuming HTTP services in Spring Boot
Learn all about the new HTTP Interfaces in Spring Framework 6 and Spring Boot 3 by building out a real world example.
Learn Spring & Spring Boot: A Free Crash Course for Beginners
New to Spring? This free crash course shows you where to start, whether to learn Spring or Spring Boot first, and how to build your first Spring Boot app.
