4.0.0 com.ankurm spring-modulith-demo 1.0.0 cqrs jar cqrs Command/query separation with plain Spring: a JPA write model, a second H2 database holding a denormalized read model that the query side reaches only through its own JdbcTemplate, and two interchangeable projection listeners (synchronous and @Async) that show the actual latency-versus-freshness trade-off CQRS makes you choose, not just assert. 25 org.springframework.boot spring-boot-dependencies ${spring-boot.version} pom import org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-jdbc com.h2database h2 runtime org.springframework.boot spring-boot-starter-test test org.awaitility awaitility test org.springframework.boot spring-boot-resttestclient test org.springframework.boot spring-boot-restclient test org.springframework.boot spring-boot-configuration-processor provided cqrs org.apache.maven.plugins maven-compiler-plugin true org.springframework.boot spring-boot-maven-plugin