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.

X (Twitter) MCP Servers with Spring AI: Search Posts and Query Docs Programmatically
· 19 min read

X (Twitter) MCP Servers with Spring AI: Search Posts and Query Docs Programmatically

X released MCP servers for its API and docs. Build a Spring Boot MCP client with Spring AI 2.0 to search X posts and query the X API docs programmatically.

Type Safe Property Paths in Spring Boot 4.1
· 18 min read

Type Safe Property Paths in Spring Boot 4.1

Spring Boot 4.1 adds type-safe property paths to Spring Data, replacing stringly typed references in sorting, criteria queries, and composite paths.

The New @RedisListener Annotation in Spring Boot 4.1
· 10 min read

The New @RedisListener Annotation in Spring Boot 4.1

Spring Boot 4.1 adds @RedisListener, one annotation that brings Redis Pub/Sub in line with @KafkaListener and @RabbitListener. No container wiring needed.

SSRF Protection in Spring Boot 4.1 with InetAddressFilter
· 13 min read

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
· 15 min read

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
· 13 min read

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
· 17 min read

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
· 18 min read

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
· 21 min read

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.