Concepts¶
Core ideas that explain how Failover stores, recovers, and expires referential data.
classDiagram
class FailoverAspect {
+failoverAround(ProceedingJoinPoint)
}
class FailoverHandler {
+store(Failover, args, payload) T
+recover(Failover, args, clazz, cause) T
+clean()
}
class FailoverStore {
+store(ReferentialPayload)
+find(name, key) Optional
+delete(ReferentialPayload)
+cleanByExpiry(Instant)
}
class KeyGenerator {
+key(Failover, List~Object~) String
}
class ExpiryPolicy {
+computeExpiry(Failover) Instant
+isExpired(Failover, ReferentialPayload) boolean
}
class PayloadEnricher {
+enrichOnStore(...) ReferentialPayload
+enrichOnRecover(...) ReferentialPayload
}
FailoverAspect --> FailoverHandler : delegates to
FailoverHandler --> FailoverStore : store / find
FailoverHandler --> KeyGenerator : derive key
FailoverHandler --> ExpiryPolicy : compute / check expiry
FailoverHandler --> PayloadEnricher : enrich on store/recover -
How It Works
End-to-end store/recover lifecycle with call-flow, state machine, and sequence diagrams.
-
Expiry Policies
TTL computation, SpEL expressions, payload-driven expiry, and custom
ExpiryPolicybeans. -
Key Generation
Three-layer key architecture — method name, annotation name, and hashed arguments.
-
Scatter / Gather
Per-entity storage for collection-returning methods — store and recover individual slices.
-
Domain Grouping
Share store entries across multiple
@Failoverannotations via thedomainattribute.
Next Steps¶
- How It Works — start here for the full picture
- Getting Started — add Failover to your project