Specifications

The versions idempotency4j supports, what it deliberately does not, and the coordinate - copied from the library at the released version.

Every row below is a combination the library’s own CI runs. Nothing here is a claim about what ought to work: it is the build matrix, at 0.4.0.

The row that says no, and the Redis line that rules out Cluster, are the ones worth reading first. A library that is vague about where it stops is a library you find the edges of in production.

Platform

  • Java

    21+

    Compiled to 21, tested on 21 and 25

  • idempotency-core

    No framework

    Plain Java, plus SLF4J

  • Spring Boot

    4.0.x, 4.1.x

    Built against 4.0.8, for the adapters and the starter

Adapters

  • Annotated methods

    Spring AOP

    No web stack needed - works in a consumer or a batch job

  • Spring MVC (Servlet)

    Yes

    The HTTP filter activates only for Servlet web applications

  • Spring WebFlux

    No

    The HTTP filter does not register, and no error is raised

Storage

  • PostgreSQL

    Tested on 16

    Via idempotency-jdbc

  • MySQL

    Tested on 8.0

    Via idempotency-jdbc

  • H2

    Tested on 2.x

    Via idempotency-jdbc, for development. The store contract runs on it

  • Redis

    7+, tested on 7

    Standalone and Sentinel. Redis Cluster is not supported

Every row is a combination CI runs: the build matrix covers Java 21 and 25 against Spring Boot 4.0 and 4.1.

The coordinate

<dependency>
    <groupId>io.github.josipmusa</groupId>
    <artifactId>idempotency-spring-boot-starter</artifactId>
    <version>0.4.0</version>
</dependency>

The starter brings the core, the AOP adapter and the HTTP filter. A storage module is a second dependency, chosen onchoosing a store.

What it is not

The support matrix says what runs. The limits say what the library refuses to pretend: no exactly-once, no distributed transaction, no protection against an effect that is not inside the action you wrapped.

Read the limitations