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.

SSRF Protection in Spring Boot 4.1 with InetAddressFilter
Learn how Spring Boot 4.1's new InetAddressFilter protects your applications against Server-Side Request Forgery (SSRF) attacks with a single bean definition.

Lazy JDBC Connections in Spring Boot 4.1: One Property, Massive Performance Win
Spring Boot 4.1 adds lazy JDBC connection fetching via spring.datasource.connection-fetch. See how it cuts connection hold time from 2 seconds to 15ms.

Getting Started with Spring gRPC in Spring Boot 4.1
Build a gRPC server and client in Spring Boot 4.1 with Spring gRPC — using @GrpcService, protobuf, and the new starters from start.spring.io.

Spring Modulith Externalized Events: Publishing Events to Kafka
Learn how to externalize Spring Modulith application events to Apache Kafka so other systems can react to changes happening inside your modular monolith.

Spring Boot + Kafka in 10 Minutes: Sending Your First Message
Produce and consume your first Apache Kafka message with Spring Boot. Covers Docker Compose, KafkaTemplate, @KafkaListener, and Embedded Kafka for tests.

Spring Modulith Durable Events: Reliable Event Processing Without a Message Broker
Learn how Spring Modulith's event publication registry persists and replays failed events across restarts, giving you a transactional outbox with no message broker.

Introduction to Spring Modulith: Building Modular Monoliths with Spring Boot
Learn how Spring Modulith helps you build a modular monolith in Spring Boot with enforced module boundaries, application events, and verified architecture.

Embabel MCP Servers and Tools for Agentic Flows on the JVM
Add tools and MCP servers to your Embabel agents in Java. Build a blog writing agent that researches topics, calculates reading time, and generates front matter.

Embabel First Look: Building Agentic Flows on the JVM
A first look at Embabel, Rod Johnson's framework for building agentic AI flows on the JVM. Build a blog writing agent using goal-oriented action planning (GOAP).