// the find
AxonIQ/AxonFramework
Framework for Evolutionary Message-Driven Microservices on the JVM
Axon Framework is a Java framework for building event-sourced, CQRS-based applications with first-class DDD support. It handles the plumbing for command buses, event stores, sagas, and query buses, letting you focus on domain logic. Targets teams building complex business domains who want opinionated structure, not teams who just want async messaging.
The annotation-driven model (@CommandHandler, @EventSourcingHandler, @SagaEventHandler) removes enormous amounts of infrastructure boilerplate while keeping domain objects clean. The separation between local and distributed implementations is genuinely clean — you can develop locally with in-memory buses and swap to Axon Server for production without touching domain code. The Axon 5 rewrite (visible in the axon-5/ docs) is gutting legacy cruft like AggregateLifecycle static calls, which is the right call even if painful for existing users. Test fixture support for aggregates and sagas is one of the best testing stories in the Java event-sourcing space.
Axon Server dependency is the elephant in the room — the framework works standalone, but the distributed story basically requires their commercial product once you need a proper event store at scale. Axon 5 migration is a breaking change cliff: the api-changes directory has 12 documents covering renamed classes, removed methods, and stored format changes, which means any existing Axon 4 app faces a significant port effort. The update checker in Axon 5 phones home with anonymous telemetry by default — opt-out rather than opt-in is the wrong default for a framework. Learning curve is steep; the framework makes simple things hard until you internalize the CQRS/ES mental model, making it a bad fit for teams that don't already know what they're signing up for.