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>implementation("io.github.josipmusa:idempotency-spring-boot-starter:0.4.0")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.