Firefly for Java
Spring at the foundation. Your domain at the center.
The original Firefly framework brings modular enterprise capabilities to Spring Boot, Spring WebFlux, and Project Reactor. Build reactive services with clear application boundaries, then add the infrastructure your system needs.
- Spring Boot 3.5
- Java 25 default
- Java 21 profile
The building blocks,
explained.
Explore what this implementation provides, with a direct path to the code behind each capability.
- Reactive HTTP services
Build request flows with Spring WebFlux and Reactor. The Java web module adds OpenAPI configuration and configurable HTTP idempotency.
Explore this capability- Commands and queries
Give writes and reads their own handlers. The command bus routes requests through validation and authorization; the query bus can use a configured cache.
Explore this capability- Workflows and sagas
Coordinate steps, persist execution state, and compensate completed work when an operation fails. Workflow and saga engines expose reactive APIs.
Explore this capability- Try, confirm, cancel
Model participating services around explicit transaction phases. The TCC engine records confirmed, canceled, and failed outcomes.
Explore this capability- Reactive transactions
Connect reactive database access to Spring transaction management through the R2DBC transaction auto-configuration.
Explore this capability- Metrics, tracing, and health
Compose Micrometer metrics, observation-based tracing, and health reporting through conditional auto-configuration.
Explore this capability
From the source
See the ideas
in real code.
Verbatim excerpt from the Lumen Lending sample controller: a reactive, validated create endpoint with constructor injection. The class continues below this excerpt.
View the complete source@RestController
@RequestMapping("/api/v1/loan-applications")
@RequiredArgsConstructor
@Tag(name = "LoanApplication", description = "Create and retrieve loan applications")
public class LoanApplicationController {
private final LoanApplicationService service;
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
@Operation(summary = "Create a loan application",
description = "Validates the request, opens and submits a new application.")
public Mono<LoanApplicationResponse> create(
@Valid @RequestBody CreateLoanApplicationRequest request) {
return service.create(request);
}
Follow a real loan application.
Lumen Lending is the companion application for the Java book. Follow a request from its HTTP boundary into the application and domain layers.
Start with the sample
Open the Lumen Lending Maven workspace and follow the book’s setup instructions. Its modules show how the application is assembled.
Trace the request
Read LoanApplicationController, then follow the injected service into the loan-origination use case. The code example comes directly from that controller.
Choose your modules
Use the parent and BOM to align dependencies. Add persistence, orchestration, security, or provider adapters as your service requires them.

Learn by building
Firefly for Java by Example
Reactive Microservices with Spring Boot, WebFlux & the Firefly Framework
Build Lumen Lending, a personal-loan origination service, while exploring reactive APIs, domain modeling, orchestration, and infrastructure. Read the source manuscript or download the book in English and Spanish.
PDF and EPUB · English and Spanish · v26.09.01
Keep exploring.
Follow the projects and references connected to Firefly for Java.
