asmhatreandClaude Opus 5 7e1676c763 Add resilience: Spring Framework 7 @Retryable and @ConcurrencyLimit
Companion code for "Spring Framework 7's Built-in Resilience: @Retryable,
@ConcurrencyLimit, and What's Left for Resilience4j". Every retry counted
by recording real invocations: defaults, backoff and jitter, timeout,
reactive and CompletableFuture returns, the concurrency limit's BLOCK and
REJECT policies, retries around transactions, composition with
Resilience4j 2.4.0, and the annotation API across 7.0.0-7.0.9.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01C3TETMrqVUWeFkNtz3Jbo3
2026-09-11 17:12:25 +00:00

spring-boot-demo

Companion code for the Spring Boot articles on ankurm.com.

One directory per article. Each is a self-contained Maven project with its own README.md, numbered documentation chapters under docs/, and captured real output under docs/output/ that a single script regenerates. Every figure quoted in an article came out of one of those files.

Directory Article What it demonstrates
actuator-in-production/ Spring Boot Actuator in Production endpoint exposure defaults, securing Actuator, custom health indicators and how they hang
spring-boot-startup-time/ Why Your Spring Boot App Takes 8 Seconds to Start BufferingApplicationStartup, JFR startup events, self time vs total time, the classpath-scan tax, the JDK 25 AOT cache
configuration-properties/ @ConfigurationProperties vs @Value in Spring Boot 4 relaxed binding measured three ways, record constructor binding, validation, IDE metadata generation
profiles-and-config/ Spring Boot Profiles Done Right the precedence stack made visible, config trees and ConfigMaps, why a profile file loses to an environment variable
spring-aop/ Spring AOP Explained every pointcut designator with real matches, JDK vs CGLIB proxies, six aspects that do not fire
docker-images/ Dockerizing Spring Boot 4: Layered Jars, Buildpacks, Distroless and Image Size Benchmarks one service packaged nine ways and measured: size on disk and pushed, rebuild delta, startup, PID 1 and signals, jlink, the JDK 25 AOT cache
kubernetes-deployment/ Deploying Spring Boot 4 on Kubernetes probe groups under a dependency outage, graceful shutdown under load four ways, JVM ergonomics per pod shape, CPU limits throttling GC, HPA on a Micrometer metric
problem-details/ Global Exception Handling with ProblemDetail (RFC 9457) in Spring Boot 4 thirteen failures under five handling setups, validation errors, i18n, content negotiation, errors outside MVC, silent 500s, decoding on the client
resilience/ Spring Framework 7's Built-in Resilience: @Retryable, @ConcurrencyLimit, and What's Left for Resilience4j @Retryable and @ConcurrencyLimit counted invocation by invocation, retries inside transactions, where Resilience4j still earns its place, migrating from Spring Retry

Articles whose text is kept here rather than only on the blog have it under <directory>/post/post.md for the body and meta.md for the title, excerpt and categories.

Running any of them

Each project needs a JDK 25 and Maven 3.9. docker-images also needs Docker, and kubernetes-deployment Docker plus a Kubernetes cluster; their READMEs list the rest:

cd <directory>
export JAVA_HOME=/path/to/jdk-25
mvn -DskipTests package
./scripts/run-all.sh          # regenerate every transcript under docs/output/

Licence

MIT — see LICENSE.

S
Description
Spring Boot 4 Actuator in production: every endpoint, securing it, separate management port, and custom health indicators for DB/Kafka/external API. Companion repository for ankurm.com.
Readme MIT
840 KiB
Languages
Java 68.7%
Shell 30.8%
Python 0.3%
Dockerfile 0.2%