package com.ankurm.startup; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup; import org.springframework.core.metrics.jfr.FlightRecorderApplicationStartup; @SpringBootApplication public class StartupDiagnosisApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(StartupDiagnosisApplication.class); String mode = System.getProperty("startup.tracking", "buffering"); // The capacity is the number of *steps*, not beans, and there is no way to change it // after construction. See docs/07-failure-modes.md for what a too-small buffer does. int capacity = Integer.getInteger("startup.buffer", 16384); switch (mode) { case "buffering" -> app.setApplicationStartup(new BufferingApplicationStartup(capacity)); case "jfr" -> app.setApplicationStartup(new FlightRecorderApplicationStartup()); default -> { } } app.run(args); } }