
A gentle introduction to eBPF: Zero-Code Observability for Java
What if you could get full distributed tracing on a plain Java HTTP server without adding any SDK, agent, or instrumentation code? This article walks through using Grafana Beyla and eBPF to automatically capture OpenTelemetry traces from a pure Java application, exporting them straight to Jaeger.
Wed, 22nd July 2026
Read MoreThe End of Reactive? How Java Virtual Threads Are Making Complex Concurrency Simple Again
Is reactive programming still necessary in Java? This article explores the limitations of platform threads, the cost of reactive programming, and how Java Virtual Threads (Project Loom) offer a simpler path to scalable concurrency — without the complexity tax.
Tue, 17th March 2026
Read MoreBuilding an Interactive TCP Proxy in Rust
Learn how to build a full-duplex TCP proxy with real-time mode switching in Rust. This article covers the challenges of bidirectional forwarding, async I/O with Tokio, and creating an interactive terminal interface for network testing.
Thu, 27th November 2025
Read MoreSpring streaming response made easy
In this short article, we'll get into stream large size of data through stream as an alternative to the traditional endpoints.
Wed, 10th September 2025
Read MoreBlossoming Intelligence: How to Run Spring AI Locally with Ollama
In this short article, we'll look at how easy it is to create a chat bot backend powered by Spring and Olama using the llama 3 model.
Sat, 11th May 2024
Read MoreReact 19: The long-expected features
React 19 introduces a number of new features that will undoubtedly make the life of react developers simpler. While the release is not yet stable, you can test out the new features using the canary version.
Wed, 17th April 2024
Read MoreBlocking is a feature of classic servlet-based web frameworks like Spring MVC. Introduced in Spring 5, Spring WebFlux is a reactive framework that operates on servers like Netty and is completely non-blocking.
Two programming paradigms are supported by Spring WebFlux. Annotations (Aspect Oriented Programming) and WebFlux.fn (Functional Programming).
"Spring WebFlux includes WebFlux.fn, a lightweight functional programming model in which functions are used to route and handle requests and contracts are designed for immutability. It is an alternative to the annotation-based programming model but otherwise runs on the same Reactive Core foundation." Spring | Functional Endpoints
As the title describe, this is a simple Songs API build using Spring, Docker and MongoDB, the endpoints are Functional Endpoints and will have the traditional ControllerAdvice as Exception handler.
Talking XML these are the project dependencies:
First, let's setup the docker compose file /compose.yaml of the project (it should generated by spring via the docker support starter).
With that set, let's create the Song class:
The SongRepository interface will be referring to the Song class in its DB ops:
Now, it's time for the Song Router, it will be responsible for router the incoming requests for the /songs ressource:
As you noticed the request are redirected to the SongHandler for a certain logic to be performed.
The SongsHandler will act as Service as well, will perform a business logic and communicate with the SongRepository for operations with the database.
As previously states, will be using the same old ControllerAdvice as Exception handler with two custom Exceptions as the following:
With all that been set, let's make use of our endpoint using Postman:



Sorry not a big fan of Madonna tbh :|


With that said, our functional songs endpoint will be good to go for further improvements and new features. This is simple, in real industrial projects, I can assure you it can get complicated with more layers, for "getting started" purposes I avoided the use of advanced concepts such as validation, DTO, etc.
You can find the full source code here