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.

Runtime & foundation
  • 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

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
LoanApplicationController.javaJava
@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);
    }
An exact excerpt from the project

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.

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

  2. Trace the request

    Read LoanApplicationController, then follow the injected service into the loan-origination use case. The code example comes directly from that controller.

  3. Choose your modules

    Use the parent and BOM to align dependencies. Add persistence, orchestration, security, or provider adapters as your service requires them.

Firefly for Java by Example cover

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.

Source references
Another language. A shared direction.PyFly