1
0
Files
spring-boot-demo/README.md
Ankur Mhatre 86246dc860 Three new article modules: configuration binding, profiles and config data, Spring AOP
configuration-properties/  @ConfigurationProperties vs @Value on Spring Boot 4.1.1.
  The relaxed-binding matrix is generated by binding each spelling rather than
  transcribed, and re-checked against real processes -- the in-process probe was
  wrong twice before it was right. Records the three findings that came out of it:
  @Value does get relaxed resolution inside Spring Boot (Boot attaches
  ConfigurationPropertySources), the configuration processor silently stops
  generating metadata on JDK 23+ when declared as a plain dependency, and @Valid is
  not what makes nested constraints run.

profiles-and-config/       Precedence, profiles, spring.config.import and config trees.
  /precedence reports every source holding a property in rank order with file and
  line, which turns "my profile file had no effect" into a two-line answer. Also
  pins the counterintuitive one: an imported file outranks the file that imported it.

spring-aop/                Designators, proxy types, and aspects that do not fire.
  One advice per supported designator so the reference table is generated from real
  matches; all fourteen unsupported designators fed to the parser. Two corrections to
  the reference documentation: unsupported designators throw
  UnsupportedPointcutPrimitiveException (extends RuntimeException, not
  IllegalArgumentException), and spring-boot-starter-aop was renamed to
  spring-boot-starter-aspectj in Boot 4.

19 contract tests across the three modules, 15 captured transcripts, all regenerated
by scripts/run-all.sh. Verified on Spring Boot 4.1.1, Spring Framework 7.0.9,
JDK 25.0.4.1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Gip4srpzMwjgoba6uEfbr5
2026-09-08 16:47:48 +00:00

2.1 KiB

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

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:

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.