Skip to content
Concepts

Concepts

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.

    Learn the lifecycle

  • Expiry Policies


    TTL computation, SpEL expressions, payload-driven expiry, and custom ExpiryPolicy beans.

    Explore expiry

  • Key Generation


    Three-layer key architecture — method name, annotation name, and hashed arguments.

    Understand key derivation

  • Scatter / Gather


    Per-entity storage for collection-returning methods — store and recover individual slices.

    Learn scatter/gather

  • Domain Grouping


    Share store entries across multiple @Failover annotations via the domain attribute.

    Explore domains


Next Steps