Skip to content

The layers between Spring Boot and your business rules.

Keep HTTP on Spring Boot and WebFlux. Add command and query buses, coordination engines, service clients, policy-based security, and telemetry as the service needs them.

jafly on Framework by Firefly

jafly by Firefly

Java 25Language and runtime
Spring Boot 4.1.1Application foundation
Spring Cloud 2025.1.3Cloud integration train
Maven 3.9.16Checked-in wrapper

Start with a working build

Build a small HTTP service, send a command through Jafly, and test its response.

Getting started

Find the right component

Choose a library or provider for the operation you need. Check its setup requirements and examples before adding it.

Module catalog

Understand the boundaries

See what Spring provides, what Jafly adds, and which decisions belong to your service.

Architecture guide

Find the layer your service needs

Choose a capability below to find its contracts and provider integrations.

Security and identity

Map principals to policy decisions with security contracts, a reactive resource server, method guards, and provider adapters.

Read the guide

Business operations

Dispatch commands and queries through validation, authorization, handlers, and optional event and cache bridges.

Read the guide

External services

Connect HTTP, SOAP, gRPC, notifications, callbacks, and Agentic through explicit service and provider integrations.

Read the guide

Event-driven integration

Use event contracts and transport adapters for in-process events, Kafka, RabbitMQ, PostgreSQL, and inbound webhooks.

Read the guide

Domain and data

Choose reactive data helpers, optional event history, cache providers, content storage, and signature adapters.

Read the guide

Business coordination

Coordinate workflows, compensating sagas, and try-confirm-cancel steps with explicit recovery and failure policies.

Read the guide

Service operations

Connect application telemetry, HTTP conventions, health checks, and centralized configuration.

Read the guide

Team-wide architecture

Share a dependency train, build conventions, service-layer starters, common types, validation, and extension contracts.

Read the guide

Choose what belongs in your service

A service can use CQRS without adopting an event store, or use a client adapter without a workflow engine. Add each dependency for a specific operation.

Kernel types and role-specific starters provide shared service conventions. CQRS, orchestration, and event sourcing add more structure when the application needs it.

Providers remain separate dependencies, so you can choose the cache, messaging transport, identity provider, or content store for each service. The parent and BOM align their versions while your application keeps its own version.

Choose Maven management

Follow one operation

In the first service, a controller accepts a customer application and sends SubmitApplication. The command bus validates it, runs configured authorization, and invokes the handler.

return commandBus.send(new SubmitApplication(request.applicantName(), request.email()));

The handler owns the business decision. Event publishing, cached-query invalidation, and infrastructure calls depend on the modules, beans, and annotations you configure.

Build the onboarding service · Read the request flow

Source code · Brand provenance and licenses