diff --git a/.gitignore b/.gitignore index 45364f8..4c0a8a9 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,10 @@ target/ .DS_Store brain/ plan/ +node_modules/ /images/ !docs/images/ /wiredoctor-report.html +# Test-run byproduct: regenerated on every mvn test, not a deliverable +wiredoctor-autoconfigure/wiredoctor-report.html .claude/ diff --git a/CHANGELOG.md b/CHANGELOG.md index b8f871f..b8c2939 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,44 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.1.4] - 2026-08-25 + +Honest media. The screenshots in the README and the report tour were captured on +0.7.1 — four releases of UI ago — so the front door showed a product that no +longer existed. Recapturing them turned up two real bugs, both fixed here. No +API, schema, or configuration changes. + +### Fixed + +- **The startup-time trend chart was empty on diff runs.** `trendHistory` was + only put on the report inside the `baseline-write=true` branch, so the run you + actually do day to day — diff mode, gates armed — rendered "Need at least 2 + baseline writes" even with a full history committed in the baseline. The + history is now handed to the report in diff mode too. The current run is not + appended: it is not a baseline entry. +- **Every generated report was stamped `dev`.** The header chip reads the + version from the jar manifest, and the build never wrote an + `Implementation-Version` into it. The manifest now carries it, so the chip + shows the release that produced the report. + +### Changed + +- **All report media recaptured from a real 1.1.4 run** — start.spring.io app on + Boot 4.1.x, 429 beans, 436 edges, with a genuine dependency cycle, a slow + `@PostConstruct` bean, an untouched exporter, first-touch ghost tracking on and + three baseline writes behind the trend chart. Seven screenshots plus three + GIFs (full tour, graph drill-down, timing charts). The report tour is rewritten + against these numbers, and its "captured on 0.7.1" disclaimer is gone. +- **`sample/v1.1.4/`** holds the complete matching set — report, JSON, baseline, + diff, ghost report and gate status — and is what the live "open this report" + links point at. The 0.10.0 report stays in `sample/test2/` for comparison. + +### Added + +- **`tools/capture-media.js`** drives a real generated report in a headless + browser and writes exactly the files the docs embed, so the media cannot + quietly drift from what the report renders again. + ## [1.1.3] - 2026-08-24 Report readability pass. 1.1.2 fixed what the report *claimed*; this release diff --git a/README.md b/README.md index 9407a9e..bb4fc7c 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ # 🩺 WireDoctor -[![Maven Central](https://img.shields.io/maven-central/v/io.github.ddsha441981/wiredoctor-autoconfigure.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/io.github.ddsha441981/wiredoctor-autoconfigure) [![CI Tests](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml/badge.svg)](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml) [![Tests](https://img.shields.io/badge/Tests-259%20passed-success.svg)](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml) [![License](https://img.shields.io/badge/License-MIT%20OR%20Apache--2.0-blue.svg)](LICENSE) [![Awesome Java](https://awesome.re/mentioned-badge.svg)](https://github.com/akullpp/awesome-java#architecture) +[![Maven Central](https://img.shields.io/maven-central/v/io.github.ddsha441981/wiredoctor-autoconfigure.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/io.github.ddsha441981/wiredoctor-autoconfigure) [![CI Tests](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml/badge.svg)](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml) [![Tests](https://img.shields.io/badge/Tests-261%20passed-success.svg)](https://github.com/ddsha441981/wiredoctor/actions/workflows/compat.yml) [![License](https://img.shields.io/badge/License-MIT%20OR%20Apache--2.0-blue.svg)](LICENSE) [![Awesome Java](https://awesome.re/mentioned-badge.svg)](https://github.com/akullpp/awesome-java#architecture) > *"Your bean graph has a story. WireDoctor reads it."* WireDoctor is a runtime diagnostic and architectural analysis tool for Spring Boot. Add one dependency — it hooks into the real, resolved `ApplicationContext` at startup and turns it into an interactive report, honest advice, and CI gates. **Zero-intrusion, zero-dashboard-server, pure insights.** -![WireDoctor report — Overview tab](docs/images/overview.png) +![WireDoctor report — a tour of every tab](docs/images/report-tour.gif) -*Captured from a real run against start.spring.io (Boot 4.0.x, 390 beans) with performance gates armed — the red `GATE FAIL` chip is a genuinely tripped gate. **[View the full docs →](https://ddsha441981.github.io/wiredoctor/)*** +*A real run against start.spring.io (Boot 4.1.x, 429 beans, 436 edges) on WireDoctor 1.1.4 — the cycle, the ghosts and the timings in the report are all genuinely from that app. **[View the full docs →](https://ddsha441981.github.io/wiredoctor/)*** -**[▶ Open this exact report live in your browser](https://ddsha441981.github.io/wiredoctor/sample/test2/wiredoctor-report.html)** — no install needed. +**[▶ Open this exact report live in your browser](https://ddsha441981.github.io/wiredoctor/sample/v1.1.4/wiredoctor-report.html)** — no install needed. --- @@ -23,13 +23,13 @@ Add the dependency — that's it. WireDoctor runs at startup, writes `wiredoctor io.github.ddsha441981 wiredoctor-autoconfigure - 1.1.0 + 1.1.4 ``` **Gradle:** ```groovy -implementation 'io.github.ddsha441981:wiredoctor-autoconfigure:1.1.0' +implementation 'io.github.ddsha441981:wiredoctor-autoconfigure:1.1.4' ``` Want CI gates? Capture a baseline once, commit it, arm the gates: @@ -84,7 +84,7 @@ Notes: | [Security posture](https://ddsha441981.github.io/wiredoctor/security-posture.html) | What the reports expose, offline-only network behavior | | [Known Limitations](https://ddsha441981.github.io/wiredoctor/known-limitations.html) | Honest heuristics and what the tool cannot guarantee | -Pre-generated sample reports (from real apps, including start.spring.io) are in [`sample/`](sample/) — or **[view the start.spring.io report live](https://ddsha441981.github.io/wiredoctor/sample/test2/wiredoctor-report.html)** without cloning anything. +Pre-generated sample reports (from real apps, including start.spring.io) are in [`sample/`](sample/) — or **[view the start.spring.io report live](https://ddsha441981.github.io/wiredoctor/sample/v1.1.4/wiredoctor-report.html)** without cloning anything. --- diff --git a/docs/images/conditions.png b/docs/images/conditions.png index 0627a94..9f9ec33 100644 Binary files a/docs/images/conditions.png and b/docs/images/conditions.png differ diff --git a/docs/images/cycle-detection.png b/docs/images/cycle-detection.png index b4da089..7a6d72f 100644 Binary files a/docs/images/cycle-detection.png and b/docs/images/cycle-detection.png differ diff --git a/docs/images/ghosts.png b/docs/images/ghosts.png index 55b96fd..d526d7b 100644 Binary files a/docs/images/ghosts.png and b/docs/images/ghosts.png differ diff --git a/docs/images/graph-drilldown.gif b/docs/images/graph-drilldown.gif new file mode 100644 index 0000000..ebbf55c Binary files /dev/null and b/docs/images/graph-drilldown.gif differ diff --git a/docs/images/graph-focus.png b/docs/images/graph-focus.png index 3ec4fc5..149429e 100644 Binary files a/docs/images/graph-focus.png and b/docs/images/graph-focus.png differ diff --git a/docs/images/overview.png b/docs/images/overview.png index 6110ea2..a8b0dd7 100644 Binary files a/docs/images/overview.png and b/docs/images/overview.png differ diff --git a/docs/images/report-tour.gif b/docs/images/report-tour.gif new file mode 100644 index 0000000..36b86b6 Binary files /dev/null and b/docs/images/report-tour.gif differ diff --git a/docs/images/smells.png b/docs/images/smells.png index 9aba7be..90c9daa 100644 Binary files a/docs/images/smells.png and b/docs/images/smells.png differ diff --git a/docs/images/timing-charts.gif b/docs/images/timing-charts.gif new file mode 100644 index 0000000..f17c90a Binary files /dev/null and b/docs/images/timing-charts.gif differ diff --git a/docs/images/timing.png b/docs/images/timing.png index 05566c5..470e488 100644 Binary files a/docs/images/timing.png and b/docs/images/timing.png differ diff --git a/docs/index.md b/docs/index.md index 6c6a9dd..eba3016 100644 --- a/docs/index.md +++ b/docs/index.md @@ -32,7 +32,7 @@ Add one dependency — WireDoctor hooks into the real, resolved `ApplicationCont io.github.ddsha441981 wiredoctor-autoconfigure - 1.1.0 + 1.1.4 ``` diff --git a/docs/report-tour.md b/docs/report-tour.md index 8be7849..30d30e8 100644 --- a/docs/report-tour.md +++ b/docs/report-tour.md @@ -5,11 +5,11 @@ nav_order: 3 # 📸 WireDoctor Report Tour -A guided walkthrough of the WireDoctor HTML console, tab by tab. All screenshots are from a **real run against start.spring.io** (Spring Initializr, Spring Boot 4.0.x, 390 beans, 432 wiring edges) with WireDoctor **0.7.1** and performance gates armed (`wiredoctor.fail-on=startup-time,slow-bean`) — not a staged demo. The full sample reports are in [`sample/`](https://github.com/ddsha441981/wiredoctor/tree/main/sample). +A guided walkthrough of the WireDoctor HTML console, tab by tab. Every screenshot and GIF here is from a **real run against start.spring.io** (Spring Initializr app, Spring Boot 4.1.x, 429 beans, 436 wiring edges) on WireDoctor **1.1.4**, with a committed baseline and gates armed — not a staged demo. The app carries a deliberate circular dependency, a slow `@PostConstruct` bean and an unused exporter, so the diagnostics have something real to find. The full sample report set is in [`sample/v1.1.4/`](https://github.com/ddsha441981/wiredoctor/tree/main/sample/v1.1.4). The report is a single self-contained `wiredoctor-report.html` — the graph library is inlined at generation time, so it renders completely offline. Just open it in a browser. -The screenshots below were captured on 0.7.1. Everything they show is still there; the charts added in v1.1.3 (coupling quadrant, Pareto curve, trend verdict bands) are described in the Smells and Timing sections but are not in these images yet. +![Every tab of the report](images/report-tour.gif) --- @@ -19,11 +19,11 @@ The screenshots below were captured on 0.7.1. Everything they show is still ther The landing tab — everything at a glance: -- **Header chips (top-right)**: active profile, bean/edge counts, and the health verdict chip. Here it shows **`GATE FAIL: slow-bean`** in red — the armed `slow-bean` performance gate tripped on this run (a bean crossed the 100ms threshold that wasn't slow in the baseline). The chip follows a strict precedence: `GATE FAIL` → `N CYCLES` → `GATES PASS` → `HEALTHY`, so the worst news always wins. -- **Stat cards**: total beans (390), wiring edges (432), dependency cycles (0), CGLIB/JDK proxies (3), ghost candidates (19), and the startup critical path cost (913ms). -- **Bean composition**: user-defined vs framework beans (55 vs 335 here — a typical real app is mostly framework), plus the heuristic orphan count. -- **Startup critical path**: the single most expensive dependency chain to readiness — here `InitializrProperties → initializrMetadataProvider → bomRangesInfoContributor` accounts for 16.3% of startup. This is where a `@Lazy` or a lighter bean pays off most. -- **Top coupling hotspots** and a **ghost candidates** preview round out the page. +- **Header chips (top-right)**: version, active profile, bean/edge counts, and the health verdict chip. Here it shows **`1 CYCLE`** in red. The chip follows a strict precedence: `GATE FAIL` → `N CYCLES` → `GATES PASS` → `HEALTHY`, so the worst news always wins. +- **Stat cards**: total beans (429), wiring edges (436), dependency cycles (1), CGLIB/JDK proxies (18), ghost candidates (2), and the startup critical path cost (1,169ms). +- **Bean composition**: user-defined vs framework beans (23 vs 406 here — a typical real app is mostly framework), the heuristic orphan count, and the `BeanDefinition.ROLE_*` split. +- **Critical path timeline**: the single most expensive dependency chain to readiness — here a Spring Security chain ending in `webSecurityExpressionHandler` accounts for 16.5% of startup. This is where a `@Lazy` or a lighter bean pays off most. +- **Bean instantiation time distribution** and **autoconfiguration outcomes** (198 matched · 11 unconditional · 126 notMatched of 335 classes) round out the page. The sidebar footer states the trust posture: *generated at startup, zero-intrusion snapshot — reads metadata, never state*. @@ -40,11 +40,13 @@ Two more chips bring startup timing into the graph (v0.10.0): - **Timing heat** — recolors nodes green→red (log scale) and scales their size by per-bean instantiation time, so expensive beans jump out at a glance. Off by default; cycle/ghost/proxy/orphan colors keep priority. - **Critical path** — traces the startup critical path in gold and dims everything else, matching the chain shown in the Timing tab. Hidden when no timing data was captured. -The screenshot above (from the demo app) shows the killer feature: **circular dependencies are highlighted in red** — `alphaBean ⇄ betaBean` jump out instantly even in a busy graph. Spring may resolve such cycles at runtime via proxies or setter injection, but they remain structural design smells, and WireDoctor's Tarjan SCC detector finds them regardless of how Spring papered over them. +The screenshot above shows the killer feature: **circular dependencies are highlighted in red** — `legacyImportService` and `legacyExportService` jump out instantly even in a 429-bean graph. Spring resolved this one at runtime through setter injection, but it remains a structural design smell, and WireDoctor's Tarjan SCC detector finds it regardless of how Spring papered over it. ![Focused bean with dependency details](images/graph-focus.png) -Clicking a node opens the **inspector panel**: health status, instantiation time (when captured), an `on critical path` tag, fan-in (dependents), fan-out (dependencies), and the exact list of beans it depends on. Here `viewControllerHandlerMapping` is focused — its 3 outgoing edges are highlighted in blue while the rest of the graph dims. This is how you answer "what actually depends on this bean?" without grepping. +Clicking a node — or searching for one and pressing Enter — opens the **inspector panel**: health status, instantiation time (when captured), an `on critical path` tag, fan-in (dependents), fan-out (dependencies), and the exact list of beans it depends on. Here `orderService` is focused: its 5 outgoing edges are highlighted in blue while the rest of the graph dims. This is how you answer "what actually depends on this bean?" without grepping. + +![Searching and focusing beans in the graph](images/graph-drilldown.gif) --- @@ -54,8 +56,8 @@ Clicking a node opens the **inspector panel**: health status, instantiation time Beans that cost startup time and memory but show no sign of use. Two independent signals, honestly separated: -- **Phase 1 — Passive candidates (always on)**: beans that are eagerly instantiated ∧ have zero incoming dependencies ∧ expose no detectable entry point (`@Controller`, `@Scheduled`, `CommandLineRunner`, listeners, …). Deliberately labeled **`CONFIDENCE LOW`** — it's a static signal. On start.spring.io it flags 19 candidates, mostly version-customizer beans that are genuinely wired through non-graph mechanisms — exactly why the confidence label exists. -- **Phase 2 — First-touch tracking (opt-in)**: the right card explains how to enable `wiredoctor.ghost-tracking.enabled=true` (dev/staging only), which wraps beans in a thin counting proxy and reports touched/untouched at shutdown, or live via `/actuator/wiredoctor/ghosts`. +- **Phase 1 — Passive candidates (always on)**: beans that are eagerly instantiated ∧ have zero incoming dependencies ∧ expose no detectable entry point (`@Controller`, `@Scheduled`, `CommandLineRunner`, listeners, …). Deliberately labeled **`CONFIDENCE LOW`** — it's a static signal. On this run it flags 2 candidates: `archivedReportExporter`, which genuinely nothing calls, and `catalogCacheWarmer`, which is wired through a lifecycle callback rather than the graph — exactly why the confidence label exists. +- **Phase 2 — First-touch tracking (opt-in)**: with `wiredoctor.ghost-tracking.enabled=true` (dev/staging only) WireDoctor wraps eligible beans in a thin counting proxy and reports touched/untouched at shutdown, or live via `/actuator/wiredoctor/ghosts`. Here 17 beans were tracked, 10 touched by a couple of HTTP calls and 7 untouched; 5 more were **untrackable**, each with its reason printed (`asyncMailer: already-proxied`, `entityManagerFactory: final-class`, …), and 391 framework beans were skipped. WireDoctor never claims "unused" — only "never invoked during this run". The distinction is printed right in the UI. @@ -67,15 +69,15 @@ WireDoctor never claims "unused" — only "never invoked during this run". The d Architecture smells computed on the **live resolved graph** — what Spring actually wired, not what the source suggests. Framework beans are filtered out of the rankings so every row is something you can actually refactor: -- **High fan-in · coupling hotspots**: beans the most others depend on. A change here ripples widest — here `AzureTokenCredentialAutoConfiguration` (8 dependents) and `initializrMetadataProvider` (6) top the list. -- **High fan-out · shotgun surgery risk**: beans that depend on the most others — they break when any of their many dependencies change. -- **Who is on the other end (v1.1.3)**: every row in both tables expands to the actual beans it is coupled to, so "fan-in 6" no longer means tracing six edges in the graph by hand. +- **High fan-in · coupling hotspots**: beans the most others depend on. A change here ripples widest — here `auditService` (4 dependents) tops the list, followed by `pricingService` (2). +- **High fan-out · shotgun surgery risk**: beans that depend on the most others — they break when any of their many dependencies change. `orderService` leads with 5. +- **Who is on the other end (v1.1.3)**: every row in both tables expands to the actual beans it is coupled to, so "fan-in 4" no longer means tracing four edges in the graph by hand. Above the tables sits the **coupling quadrant** (v1.1.3) — a fan-out vs fan-in scatter of every bean, so you see the shape the two top-10 lists hide: - **Up the left edge**: god beans — high fan-in, low fan-out. Many beans depend on them, so a change ripples widest. - **Along the bottom**: shotgun-surgery risks — high fan-out, low fan-in. -- The dashed **I = 0.8** line is the same instability threshold the *Unstable beans* table uses; everything below it is unstable. +- The dashed **I = 0.8** line is the same instability threshold the *Unstable beans* table uses; everything below it is unstable. Here `orderService` (I = 0.83) and `orderRepository` (I = 0.80) sit above it. - Dot size is how many beans share that exact position, framework beans are dimmed (with a **Hide framework beans** toggle), and clicking a dot that holds a single bean opens it in the Graph tab. - Axes are square-root scaled so a 400-bean tail stays readable — but every tick is a real count, not a bucket. @@ -87,13 +89,15 @@ Above the tables sits the **coupling quadrant** (v1.1.3) — a fan-out vs fan-in Real measured startup numbers from `BufferingApplicationStartup` — no reflection heuristics: -- **How few beans you would have to fix (v1.1.3)**: a Pareto curve of cumulative bean-instantiation time with the 80% knee marked — on a start.spring.io run, **37 of 283 beans** carry 80% of it. The caption is explicit that a bean's time includes the beans its constructor triggers, so the total counts nested instantiation more than once: it is a ranking of where to look, not a wall-clock budget. -- **Slowest startup steps**: the Boot lifecycle phases, with `spring.context.refresh` (4,619ms) at the top and individual `spring.beans.instantiate` steps below. Since v1.1.3 the bean each `instantiate` step created is its own column, so a step no longer names a phase without naming what it built. -- **Slow bean instantiation**: every bean over the `slow-bean-threshold-ms` (default 100ms), ranked. On this run, `bomRangesInfoContributor` (315ms) and `initializrMetadataProvider` (313ms) lead. +- **How few beans you would have to fix (v1.1.3)**: a Pareto curve of cumulative bean-instantiation time with the 80% knee marked — on this run, **29 of 270 beans** carry 80% of it. The caption is explicit that a bean's time includes the beans its constructor triggers, so the total counts nested instantiation more than once: it is a ranking of where to look, not a wall-clock budget. +- **Thread distribution (v1.1.0)**: which threads actually instantiated beans. Here all 428 measured beans initialized on `main` — the card says *parallel init not active* rather than implying concurrency that isn't there. +- **Slowest startup steps**: the Boot lifecycle phases, with `spring.context.refresh` (6,321ms) at the top and individual `spring.beans.instantiate` steps below. Since v1.1.3 the bean each `instantiate` step created is its own column, so a step no longer names a phase without naming what it built. +- **Slow bean instantiation**: every bean over the `slow-bean-threshold-ms` (default 100ms), ranked. On this run `entityManagerFactory` (2,205ms) leads, with the deliberately sleepy `catalogCacheWarmer` (279ms) further down. +- **Performance gates** (since v0.7.1): each gate (startup-time, slow-bean, new-cycle, condition-changed) with its threshold, actual value, and a PASS/FAIL/NOT RUN verdict chip — plus `not armed` tags and a CI hint when gates aren't configured. This is the UI counterpart of `wiredoctor.fail-on` CI gating (see the [Performance Gates guide](performance-gates.html)). -The **startup time trend** chart closes the tab: startup time plus a dashed bean-count line, with a coloured band on every interval that crosses the `startup-time` gate's thresholds — red when a slowdown is *unexplained by bean count*, amber when the app also grew, green when it got faster. It only has data from the second `baseline-write=true` run onward; see the [Startup Time Trend guide](startup-time-trend.html) for the verdict rules and the caveats they carry. +The **startup time trend** chart closes the tab: startup time plus a dashed bean-count line, with a coloured band on every interval that crosses the `startup-time` gate's thresholds — red when a slowdown is *unexplained by bean count*, amber when the app also grew, green when it got faster. Here three baseline writes show +110ms (1.5%), well inside the gate's thresholds, so no band is drawn. See the [Startup Time Trend guide](startup-time-trend.html) for the verdict rules and the caveats they carry. -Since v0.7.1, this tab also hosts the **Performance Gates card**: each gate (startup-time, slow-bean, new-cycle, condition-changed) with its threshold, actual value, and a PASS/FAIL/NOT RUN verdict chip — plus `not armed` tags and a CI hint when gates aren't configured. This is the UI counterpart of `wiredoctor.fail-on` CI gating (see the [Performance Gates guide](performance-gates.html)). +![Scrolling the timing charts](images/timing-charts.gif) --- @@ -101,7 +105,7 @@ Since v0.7.1, this tab also hosts the **Performance Gates card**: each gate (sta ![Conditions tab](images/conditions.png) -Spring Boot's **condition evaluation report**, snapshotted into the report — 358 autoconfiguration classes here, each tagged `matched` / `notMatched` / `unconditional`, with count chips and a class-name filter. +Spring Boot's **condition evaluation report**, snapshotted into the report — 335 autoconfiguration classes here, each tagged `matched` / `notMatched` / `unconditional`, with count chips and a class-name filter. Why snapshot something Boot already keeps? Because a snapshot can be **diffed**. Commit it in your baseline and a Boot upgrade that silently flips an autoconfiguration from `matched → notMatched` is caught in CI with the exact condition message — before you debug the mystery of the vanished bean. See the [Upgrade Guard guide](upgrade-guard.html). @@ -109,4 +113,4 @@ Why snapshot something Boot already keeps? Because a snapshot can be **diffed**. ## Try it yourself -Open the pre-generated reports in [`sample/`](https://github.com/ddsha441981/wiredoctor/tree/main/sample) in any browser, or add the dependency to your own app — the report appears in your working directory on next startup. See [Quick start](https://github.com/ddsha441981/wiredoctor#-quick-start). +Open [this exact report live](https://ddsha441981.github.io/wiredoctor/sample/v1.1.4/wiredoctor-report.html), grab the whole set from [`sample/v1.1.4/`](https://github.com/ddsha441981/wiredoctor/tree/main/sample/v1.1.4), or add the dependency to your own app — the report appears in your working directory on next startup. See [Quick start](https://github.com/ddsha441981/wiredoctor#-quick-start). diff --git a/docs/roadmap.md b/docs/roadmap.md index 59aadc0..8af1351 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -11,6 +11,7 @@ nav_order: 13 | Version | Date | What | |---------|------|------| +| v1.1.4 | 2026-08-25 | **Honest media** — every screenshot and GIF recaptured from a real 1.1.4 report, trend chart fed on diff runs, report header stamped with the real version | | v1.1.3 | 2026-08-24 | **Report readability** — coupling quadrant, Pareto curve, trend verdict bands, drill-downs on every ranking | | v1.1.2 | 2026-08-24 | Report accuracy — type-collected beans are not ghosts, baseline diff noise masked | | v1.1.1 | 2026-08-08 | Log format fix | diff --git a/docs/sample/test2/wiredoctor-report.html b/docs/sample/v1.1.4/wiredoctor-report.html similarity index 84% rename from docs/sample/test2/wiredoctor-report.html rename to docs/sample/v1.1.4/wiredoctor-report.html index 89e3fed..8aa6aa9 100644 --- a/docs/sample/test2/wiredoctor-report.html +++ b/docs/sample/v1.1.4/wiredoctor-report.html @@ -142,7 +142,7 @@ .chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 20px; font-size: 12px; font-weight: 600; - border: 1px solid transparent; + border: 1px solid transparent; white-space: nowrap; } .chip .dot { width: 6px; height: 6px; border-radius: 50%; } .chip.ok { color: var(--ok); background: var(--ok-dim); border-color: rgba(52,201,142,0.25); } @@ -193,10 +193,23 @@ .card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 18px 20px; + transition: transform 0.2s, box-shadow 0.2s; +} +.card:hover { + transform: translateY(-1px); + box-shadow: 0 2px 12px rgba(0,0,0,0.2); } .grid { display: grid; gap: 16px; } .kpis { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin-bottom: 20px; } -.kpi { padding: 14px 16px; } +.kpi { + padding: 14px 16px; + transition: transform 0.2s, box-shadow 0.2s; + cursor: default; +} +.kpi:hover { + transform: translateY(-2px); + box-shadow: 0 4px 20px rgba(0,0,0,0.3); +} .kpi .k-label { font-size: 11.5px; color: var(--text-2); font-weight: 600; } .kpi .k-value { font-size: 26px; font-weight: 700; font-family: var(--mono); letter-spacing: -1px; margin-top: 2px; } .kpi .k-value small { font-size: 13px; color: var(--text-2); font-weight: 500; letter-spacing: 0; } @@ -204,24 +217,107 @@ .kpi.danger .k-value { color: var(--danger); } .kpi.warn .k-value { color: var(--warn); } .kpi.ghost .k-value { color: var(--ghost); } -.two-col { grid-template-columns: 1fr 1fr; } +.kpi .k-note { font-size: 10.5px; color: var(--text-dim); margin-top: 5px; line-height: 1.35; } +.two-col { grid-template-columns: 1fr 1fr; align-items: start; } @media (max-width: 1000px) { .two-col { grid-template-columns: 1fr; } } -table.data { width: 100%; border-collapse: collapse; font-size: 13px; } +/* ═══════════ Nav: sticky sidebar on desktop, drawer on small screens ═══════════ */ +nav { position: sticky; top: 0; z-index: 10; } +#nav-toggle { + display: none; flex-shrink: 0; width: 32px; height: 30px; cursor: pointer; + background: var(--surface-3); border: 1px solid var(--border); color: var(--text); + border-radius: 8px; font-size: 15px; line-height: 1; +} +#nav-backdrop { display: none; position: fixed; inset: 52px 0 0; z-index: 20; background: rgba(0,0,0,0.55); } +@media (max-width: 860px) { + #nav-toggle { display: block; } + nav { + position: fixed; top: 52px; bottom: 0; left: 0; z-index: 30; width: 200px; + transform: translateX(-100%); transition: transform .18s ease-out; + box-shadow: 4px 0 22px rgba(0,0,0,0.45); + } + nav.open { transform: none; } + #nav-backdrop.show { display: block; } + .tab { padding: 16px 14px; } + .kpis { grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)); gap: 10px; } + .kpi .k-value { font-size: 21px; } + .card { padding: 15px 16px; } +} +@media (max-width: 560px) { + header { gap: 10px; padding: 0 12px; } + .logo-ver, #h-profile, #h-beans { display: none; } + .header-meta { gap: 6px; font-size: 11px; } +} +@media (prefers-reduced-motion: reduce) { + nav { transition: none; } + .card, .kpi { transition: none; } + .cp-bar { animation: none; } +} + +/* ═══════════ Tables ═══════════ */ +.card { overflow-x: auto; } +table.data { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 13px; } table.data th { text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.8px; - color: var(--text-2); font-weight: 700; padding: 8px 12px; - border-bottom: 1px solid var(--border); white-space: nowrap; + color: var(--text-2); font-weight: 700; padding: 9px 12px; + background: var(--surface); border-bottom: 1px solid var(--border-hi); + white-space: nowrap; position: sticky; top: 0; z-index: 1; } -table.data th.num, table.data td.num { text-align: right; font-family: var(--mono); } +table.data th.num, table.data td.num { text-align: right; font-family: var(--mono); font-variant-numeric: tabular-nums; } table.data td { padding: 8px 12px; border-bottom: 1px solid var(--border); vertical-align: top; } +table.data tbody tr:nth-child(even) td { background: rgba(255,255,255,0.018); } table.data tr:last-child td { border-bottom: none; } table.data tr:hover td { background: var(--surface-2); } +table.data tbody tr td:first-child { box-shadow: inset 2px 0 0 transparent; } +table.data tbody tr:hover td:first-child { box-shadow: inset 2px 0 0 var(--accent); } + +/* v1.1.3 — drill-down. Collapsed by default: the summary keeps the number the + cell showed before, the detail is one click away for whoever wants it. */ +.drill > summary { + cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 5px; +} +.drill > summary::-webkit-details-marker { display: none; } +.drill > summary::after { content: '▸'; font-size: 9px; color: var(--text-dim); } +.drill[open] > summary::after { content: '▾'; } +.drill > summary:hover::after { color: var(--accent); } +.drill > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 3px; } +.drill-body { + margin-top: 7px; padding-left: 10px; border-left: 2px solid var(--border-hi); + font-family: var(--mono); font-size: 11.5px; color: var(--text-2); line-height: 1.7; + word-break: break-all; +} + +/* ═══════════ Charts (dark-validated: ordinal ramp + categorical slots) ═══════════ */ +.chart { display: block; width: 100%; height: auto; } +.chart .grid-line { stroke: var(--border); stroke-width: 1; } +.chart .axis-txt { fill: var(--text-dim); font-family: var(--mono); font-size: 11px; } +.chart .val-txt { fill: var(--text-2); font-family: var(--mono); font-size: 11.5px; font-weight: 700; } +/* the viewBox is sized so a half-width desktop card renders it ~1:1; in a + narrow card it scales down, so lift the type to keep it legible */ +@media (max-width: 860px) { .chart .axis-txt { font-size: 15px; } .chart .val-txt { font-size: 16px; } } +.chart .col { transition: opacity .12s; cursor: default; } +.chart .col:hover { opacity: 0.75; } +.chart-note { font-size: 11px; color: var(--text-dim); margin: 10px 0 0; } +.sc-dot { stroke: var(--surface); stroke-width: 0.6; } +.sc-dot.user { fill: var(--accent); } +.sc-dot.fw { fill: var(--text-dim); opacity: 0.4; } +.sc-dot.one { cursor: pointer; } +.sc-dot.one:hover { stroke: var(--text); stroke-width: 1.4; } +.sc-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; + color: var(--text-2); cursor: pointer; user-select: none; } +.sc-toggle input { accent-color: var(--accent); } +.sc-q { font-size: 9.5px; fill: var(--text-dim); } +.stack { display: flex; gap: 2px; height: 22px; border-radius: 4px; overflow: hidden; } +.stack > span { min-width: 3px; } +.stack-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 12px; font-size: 12px; } +.stack-legend > span { display: flex; align-items: center; gap: 7px; } +.stack-legend .sw { width: 9px; height: 9px; border-radius: 2px; flex-shrink: 0; } .bean { font-family: var(--mono); font-size: 12.5px; word-break: break-all; } .muted { color: var(--text-2); } .dim { color: var(--text-dim); } .bar-wrap { display: flex; align-items: center; gap: 10px; } +.bar-wrap .bean { flex-shrink: 0; white-space: nowrap; } .bar { height: 6px; border-radius: 3px; background: var(--accent); min-width: 2px; } .bar.warn { background: var(--warn); } @@ -246,6 +342,11 @@ .empty { padding: 28px; text-align: center; color: var(--text-dim); font-size: 13px; } +.empty::before { content: attr(data-icon); display: block; font-size: 28px; margin-bottom: 8px; opacity: 0.5; } + +/* ═══════════ Animations ═══════════ */ +@keyframes bar-fill { from { width: 0 !important; } } +.cp-bar { animation: bar-fill 0.6s ease-out; } /* ═══════════ Graph tab ═══════════ */ #graph-shell { display: flex; height: 100%; } @@ -289,6 +390,22 @@ } .cp-node b { color: var(--warn); font-weight: 600; } .cp-arrow { color: var(--text-dim); font-size: 12px; } +/* v1.1.3 — cycle chain: same chip as the critical path, but clickable and red */ +.cy-node { + font-family: var(--mono); font-size: 11.5px; padding: 4px 9px; border-radius: 5px; + background: var(--danger-dim); color: var(--danger); + border: 1px solid rgba(229,83,75,0.35); cursor: pointer; +} +.cy-node:hover { background: var(--danger); color: #fff; } +.cy-node:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } +.cy-fix { + margin-top: 16px; padding: 12px 14px; border-radius: 6px; + background: var(--surface-2); border-left: 3px solid var(--ok); +} +.cy-fix-h { font-size: 10.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ok); margin-bottom: 8px; } +.cy-fix.blocked { border-left-color: var(--warn); } +.cy-fix.blocked .cy-fix-h { color: var(--warn); } +.cy-lazy { color: var(--accent); } ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-thumb { background: var(--surface-3); border-radius: 5px; border: 2px solid var(--bg); } @@ -298,10 +415,11 @@
+
profile: default @@ -314,814 +432,832 @@
+ diff --git a/docs/startup-time-trend.md b/docs/startup-time-trend.md index ef17fef..81fd543 100644 --- a/docs/startup-time-trend.md +++ b/docs/startup-time-trend.md @@ -39,6 +39,8 @@ Example `trendHistory` in `wiredoctor-baseline.json`: The Timing tab shows a two-axis chart: `totalStartupMs` as a solid line (left axis) and `beanCount` as a dashed line (right axis). Each point is a baseline write, so gradual creep becomes visible — a 200ms drift per week is obvious long before the `startup-time` gate trips on a single bad run. +Since v1.1.4 the chart also renders on ordinary diff runs (`baseline-write=false`) — it plots the baseline's history, which is what you have committed. The current run is not plotted: it is not a baseline entry, and pretending otherwise would put an unrecorded point on a committed trend. + Any interval that crosses the **`startup-time` gate's own thresholds** (both must hold — default `500ms` AND `20%`; see [Performance gates](performance-gates.html)) gets a coloured band, and the caption below states the verdict for the latest interval: | Band | Meaning | diff --git a/docs/why-wiredoctor.md b/docs/why-wiredoctor.md index 8f05108..49b4b1e 100644 --- a/docs/why-wiredoctor.md +++ b/docs/why-wiredoctor.md @@ -23,7 +23,7 @@ Five real problems. One dependency. io.github.ddsha441981 wiredoctor-autoconfigure - 1.1.0 + 1.1.4 ``` diff --git a/pom.xml b/pom.xml index f8f9fc9..8d75b20 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 io.github.ddsha441981 wiredoctor-parent - 1.1.3 + 1.1.4 pom WireDoctor @@ -95,7 +95,22 @@ - + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.1 + + + + true + + + + diff --git a/sample/README.md b/sample/README.md index b5626db..7c58606 100644 --- a/sample/README.md +++ b/sample/README.md @@ -4,7 +4,9 @@ Real WireDoctor output captured from actual runs — open the `.html` files dire | Folder | Source | Notes | |--------|--------|-------| +| `v1.1.4/` | **start.spring.io** (Spring Initializr, Boot 4.1.x, 429 beans, 436 edges) on WireDoctor **1.1.4** | The current set: report + JSON + baseline + diff + ghost report + gate status. One real cycle, a slow `@PostConstruct` bean, an untouched exporter, first-touch tracking on, and three baseline writes behind the trend chart | | `test1/` | Early WireDoctor run (older report format) | Minimal app, legacy schema | -| `test2/` | **start.spring.io** (Spring Initializr, Boot 4.0.x, 390 beans) on WireDoctor **0.10.0** | Shows the v0.10.0 Graph tab: **Timing heat** (per-bean instantiation heat map) and **Critical path** (gold highlight) chips, backed by the full `beanTimings` map (386 timed beans) | +| `test2/` | **start.spring.io** on WireDoctor **0.10.0** | Kept for comparison: the pre-1.1.0 report shape (no thread distribution, no trend history) | +| `test3/`, `pipeline_test/` | Larger app / CI pipeline run | A `ci-` prefixed set showing gate status and diff output as CI writes them | -The screenshots in the **[report tour](../docs/report-tour.md)** were captured from `test2/wiredoctor-report.html`. +The screenshots and GIFs in the **[report tour](../docs/report-tour.md)** are captured from `v1.1.4/wiredoctor-report.html` by `tools/capture-media.js`. diff --git a/sample/v1.1.4/wiredoctor-baseline.json b/sample/v1.1.4/wiredoctor-baseline.json new file mode 100644 index 0000000..92f689e --- /dev/null +++ b/sample/v1.1.4/wiredoctor-baseline.json @@ -0,0 +1,2601 @@ +{ + "schemaVersion" : 1, + "activeProfiles" : [ ], + "threadDistribution" : { + "perThread" : { + "main" : [ "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration", "wireDoctorGhostTrackingPostProcessor", "healthEndpointGroups", "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties", "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration", "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration", "hikariDataSourceMeterBinder", "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties", "jdbcTemplate", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", "webEndpointPathMapper", "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "org.springframework.context.annotation.internalConfigurationAnnotationProcessor", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration", "&entityManagerFactory", "openEntityManagerInViewInterceptor", "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration", "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration", "beanNameViewResolver", "pathPatternRequestMatcherBuilder", "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration", "viewResolver", "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration", "projectingArgumentResolverBeanPostProcessor", "tomcatServletWebServerFactoryCustomizer", "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties", "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration", "pricingService", "dataSourceScriptDatabaseInitializer", "applicationTaskExecutorAsyncConfigurer", "meterRegistryPostProcessor", "endpointMediaTypes", "jvmCompilationMetrics", "jacksonMixinModuleEntries", "orderController", "jdbcConnectionDetailsHikariBeanPostProcessor", "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration", "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties", "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration", "repositoryTagsProvider", "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties", "org.springframework.scheduling.annotation.ProxyAsyncConfiguration", "org.springframework.boot.context.internalConfigurationPropertiesBinder", "dataSourcePoolMetadataMeterBinder", "dbHealthContributor", "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration", "jpa.OrderRepository.fragments#0", "catalogCacheWarmer", "webServerFactoryCustomizerBeanPostProcessor", "controllerEndpointHandlerMapping", "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration", "jdbcClient", "observabilitySchedulingConfigurer", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration", "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration", "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration", "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties", "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "org.springframework.boot.persistence.autoconfigure.EntityScanPackages", "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties", "conventionErrorViewResolver", "wireDoctorGhostTracker", "org.springframework.context.event.internalEventListenerProcessor", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", "formContentFilter", "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration", "defaultViewResolver", "routerFunctionMapping", "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration", "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties", "multipartResolver", "healthEndpointWebExtension", "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration", "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration", "conversionServicePostProcessor", "webExposeExcludePropertyEndpointFilter", "requestMappingHandlerMapping", "lifecycleProcessor", "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "org.springframework.aop.config.internalAutoProxyCreator", "requestMappingHandlerAdapter", "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration", "tomcatMetricsBinder", "wiredoctor-com.wiredoctor.WireDoctorProperties", "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration", "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension", "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration", "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration", "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties", "sslMeterBinder", "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration", "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties", "org.springframework.context.annotation.internalAutowiredAnnotationProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration", "orderService", "metricsRepositoryMethodInvocationListenerBeanPostProcessor", "classLoaderMetrics", "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration", "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration", "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration", "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration", "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory", "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration", "springDataWebSettings", "fileWatcher", "sortResolver", "stringHttpMessageConvertersCustomizer", "springSecurityPathPatternParserBeanDefinitionRegistryPostProcessor", "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration", "standardJsonMapperBuilderCustomizer", "thymeleafViewResolver", "errorAttributes", "beanNameHandlerMapping", "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration", "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration", "delegatingApplicationListener", "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration", "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter", "org.springframework.data.web.config.SpringDataJacksonConfiguration", "bootstrapExecutor", "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration", "flashMapManager", "orderRepository", "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration", "jackson2EndpointJsonMapper", "requestMatcherProvider", "legacyExportService", "healthHttpCodeStatusMapper", "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration", "metricsRepositoryMethodInvocationListener", "uptimeMetrics", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration", "controllerExposeExcludePropertyEndpointFilter", "jvmThreadMetrics", "pathMappedEndpoints", "auditService", "standardJsonFactoryBuilderCustomizer", "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar", "jsonFactory", "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration", "managementServletContext", "fileDescriptorMetrics", "livenessStateHealthIndicator", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration", "org.springframework.transaction.config.internalTransactionalEventListenerFactory", "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration", "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration", "mvcValidator", "applicationAvailability", "defaultTemplateResolver", "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration", "mvcResourceUrlProvider", "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties", "sslInfo", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration", "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties", "servletEndpointRegistrar", "archivedReportExporter", "org.springframework.boot.autoconfigure.AutoConfigurationPackages", "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties", "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties", "jackson3pageModule", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties", "hikariPoolDataSourceMetadataProvider", "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration", "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration", "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration", "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration", "org.springframework.data.web.config.SpringDataWebConfiguration", "legacyImportService", "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration", "propertiesEndpointAccessResolver", "errorPageRegistrarBeanPostProcessor", "mvcConversionService", "endpointJackson2ObjectMapperWebMvcConfigurer", "initializeAuthenticationProviderBeanManagerConfigurer", "org.springframework.context.annotation.internalPersistenceAnnotationProcessor", "controllerEndpointDiscoverer", "org.springframework.boot.context.properties.BoundConfigurationProperties", "diskSpaceHealthIndicator", "jvmMemoryMetrics", "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration", "mvcPathMatcher", "handlerExceptionResolver", "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration", "basicErrorController", "pingHealthContributor", "sslHealthIndicator", "healthEndpointGroupMembershipValidator", "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration", "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration", "groupsHealthContributorNameValidator", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration", "namedParameterJdbcTemplate", "simpleAsyncTaskExecutorBuilder", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties", "spelValueExpressionResolver", "org.springframework.scheduling.config.internalAsyncAnnotationProcessor", "mvcViewResolver", "simpleConfig", "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration", "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration", "requestDataValueProcessor", "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration", "observationRegistry", "mvcUriComponentsContributor", "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties", "webAccessPropertiesOperationFilter", "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration", "readinessStateHealthIndicator", "objectPostProcessor", "jpaSharedEM_entityManagerFactory", "wiredoctorDemoApplication", "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration", "templateEngine", "jackson3GeoModule", "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration", "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties", "platformTransactionManagerCustomizers", "securityFilterChainRegistration", "data-jpa.repository-aot-processor#0", "endpointCachingOperationInvokerAdvisor", "defaultServletHandlerMapping", "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration", "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties", "persistenceExceptionTranslationPostProcessor", "characterEncodingFilter", "observationRegistryPostProcessor", "sortCustomizer", "webEndpointDiscoverer", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration", "org.springframework.security.config.annotation.web.configuration.ObservationConfiguration", "preserveErrorControllerTargetClassPostProcessor", "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration", "logbackMetrics", "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration", "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties", "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration", "propertySourcesPlaceholderConfigurer", "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration", "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration", "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties", "methodValidationPostProcessor", "wireDoctorGhostReportWriter", "jsonComponentModule", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "entityManagerFactoryBuilder", "org.springframework.context.event.internalEventListenerFactory", "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration", "webSocketWebServerCustomizer", "clientConvertersCustomizer", "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties", "springSecurityFilterChain", "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration", "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties", "healthStatusAggregator", "endpointJsonMapper", "enableGlobalAuthenticationAutowiredConfigurer", "transactionTemplate", "mvcUrlPathHelper", "jsonMapperBuilder", "servletWebServerFactoryCustomizer", "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration", "inMemoryUserDetailsManager", "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration", "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration", "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration", "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration", "jpa.named-queries#0", "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration", "filterChainDecoratorPostProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration", "metricsObservationHandlerGroup", "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration", "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties", "transactionInterceptor", "simpleMeterRegistry", "authenticationEventPublisher", "bootstrapExecutorAliasPostProcessor", "startupTimeMetrics", "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties", "multipartConfigElement", "requestContextFilter", "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration", "pageableResolver", "availabilityProbesHealthEndpointGroupsPostProcessor", "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration", "handlerFunctionAdapter", "localeResolver", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration", "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration", "jvmHeapPressureMetrics", "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration", "welcomePageNotAcceptableHandlerMapping", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration", "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration", "endpointOperationParameterMapper", "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration", "spring.transaction-org.springframework.boot.transaction.autoconfigure.TransactionProperties", "jpaVendorAdapter", "sslBundleRegistry", "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration", "wireDoctorAnalyzer", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration", "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration", "jacksonGeoModule", "meterRegistryCloser", "mvcContentNegotiationManager", "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration", "httpRequestHandlerAdapter", "asyncMailer", "org.springframework.aop.framework.autoproxy.defaultProxyConfig", "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration", "sslPropertiesSslBundleRegistrar", "org.springframework.context.annotation.internalCommonAnnotationProcessor", "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration", "defaultMeterObservationHandler", "notificationService", "simpleControllerHandlerAdapter", "resourceHandlerMapping", "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration", "simpleAsyncTaskSchedulerBuilder", "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties", "healthContributorRegistry", "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties", "org.springframework.transaction.config.internalTransactionAdvisor", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration", "eagerJpaMetamodelCacheCleanup", "propertiesObservationFilter", "persistenceManagedTypes", "micrometerClock", "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari", "propertiesMeterFilter", "problemDetailJsonMapperBuilderCustomizer", "demoSecurityConfig", "jacksonJsonMapper", "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration", "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration", "endpointJsonMapperWebMvcConfigurer", "diskSpaceMetrics", "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup", "servletEndpointDiscoverer", "metricsHttpServerUriTagFilter", "eagerTaskExecutorMetrics", "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration", "privilegeEvaluator", "jacksonMixinModule", "healthEndpoint", "viewControllerHandlerMapping", "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties", "mvcPatternParser", "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor", "dispatcherServlet", "jvmInfoMetrics", "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties", "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration", "demoChain", "webEndpointServletHandlerMapping", "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor", "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration", "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration", "threadPoolTaskExecutorBuilder", "processorMetrics", "inventoryService", "transactionAttributeSource", "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration", "transactionExecutionListeners", "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration", "serverConvertersCustomizer", "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration", "transactionManager", "org.springframework.data.web.config.SpringDataJackson3Configuration", "errorPageCustomizer", "openEntityManagerInViewInterceptorConfigurer", "tomcatWebServerFactoryCustomizer", "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration", "authenticationManagerPostProcessor", "threadPoolTaskSchedulerBuilder", "viewNameTranslator", "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration", "server-org.springframework.boot.web.server.autoconfigure.ServerProperties", "pageableCustomizer", "dispatcherServletRegistration", "dataSource", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "healthEndpointGroupsBeanPostProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration", "com.wiredoctor.WireDoctorAutoConfiguration", "jpaMappingContext", "tomcatServletWebServerFactory", "mvcApiVersionStrategy", "error", "webAuthorizationManagerPostProcessor", "jdbcConnectionDetails", "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration", "jvmGcMetrics", "offsetResolver", "initializeUserDetailsBeanManagerConfigurer", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties", "jacksonJsonHttpMessageConvertersCustomizer", "healthEndpointWebMvcHandlerMapping", "defaultValidator", "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration", "welcomePageHandlerMapping", "servletExposeExcludePropertyEndpointFilter", "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration", "authenticationManagerBuilder", "webMvcObservationFilter", "securityDialect", "pageModule", "webSecurityExpressionHandler" ] + }, + "counts" : { + "main" : 428 + } + }, + "startupSlowestSteps" : [ { + "name" : "spring.context.refresh", + "durationMs" : 6429, + "tags" : { } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 2264, + "tags" : { + "threadName" : "main", + "beanName" : "&entityManagerFactory", + "beanType" : "interface org.springframework.context.weaving.LoadTimeWeaverAware" + } + }, { + "name" : "spring.context.beans.post-process", + "durationMs" : 1868, + "tags" : { } + }, { + "name" : "spring.context.beandef-registry.post-process", + "durationMs" : 1488, + "tags" : { + "postProcessor" : "org.springframework.context.annotation.ConfigurationClassPostProcessor@47404bea" + } + }, { + "name" : "spring.context.config-classes.parse", + "durationMs" : 1464, + "tags" : { + "classCount" : "164" + } + }, { + "name" : "spring.boot.webserver.create", + "durationMs" : 559, + "tags" : { + "factory" : "class org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 396, + "tags" : { + "threadName" : "main", + "beanName" : "demoChain" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 349, + "tags" : { + "threadName" : "main", + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", + "beanType" : "class org.springframework.security.config.annotation.web.builders.HttpSecurity" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 301, + "tags" : { + "threadName" : "main", + "beanName" : "catalogCacheWarmer" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 190, + "tags" : { + "threadName" : "main", + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 186, + "tags" : { + "threadName" : "main", + "beanName" : "tomcatServletWebServerFactory", + "beanType" : "interface org.springframework.boot.web.server.servlet.ServletWebServerFactory" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 185, + "tags" : { + "threadName" : "main", + "beanName" : "orderController" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 178, + "tags" : { + "threadName" : "main", + "beanName" : "orderService", + "beanType" : "class com.example.demo.order.OrderService" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 173, + "tags" : { + "threadName" : "main", + "beanName" : "mvcContentNegotiationManager", + "beanType" : "interface org.springframework.web.accept.ContentNegotiationStrategy" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 171, + "tags" : { + "threadName" : "main", + "beanName" : "orderRepository", + "beanType" : "interface com.example.demo.domain.OrderRepository" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 142, + "tags" : { + "threadName" : "main", + "beanName" : "requestMappingHandlerAdapter" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 124, + "tags" : { + "threadName" : "main", + "beanName" : "jacksonJsonHttpMessageConvertersCustomizer", + "beanType" : "interface org.springframework.boot.http.converter.autoconfigure.ServerHttpMessageConvertersCustomizer" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 122, + "tags" : { + "threadName" : "main", + "beanName" : "jacksonJsonMapper", + "beanType" : "class tools.jackson.databind.json.JsonMapper" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 106, + "tags" : { + "threadName" : "main", + "beanName" : "webMvcObservationFilter", + "beanType" : "interface org.springframework.boot.web.servlet.ServletContextInitializer" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 95, + "tags" : { + "threadName" : "main", + "beanName" : "observationRegistry", + "beanType" : "interface io.micrometer.observation.ObservationRegistry" + } + } ], + "slowBeans" : [ { + "beanName" : "&entityManagerFactory", + "durationMs" : 2264 + }, { + "beanName" : "demoChain", + "durationMs" : 396 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", + "durationMs" : 349 + }, { + "beanName" : "catalogCacheWarmer", + "durationMs" : 301 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration", + "durationMs" : 190 + }, { + "beanName" : "tomcatServletWebServerFactory", + "durationMs" : 186 + }, { + "beanName" : "orderController", + "durationMs" : 185 + }, { + "beanName" : "orderService", + "durationMs" : 178 + }, { + "beanName" : "mvcContentNegotiationManager", + "durationMs" : 173 + }, { + "beanName" : "orderRepository", + "durationMs" : 171 + }, { + "beanName" : "requestMappingHandlerAdapter", + "durationMs" : 142 + }, { + "beanName" : "jacksonJsonHttpMessageConvertersCustomizer", + "durationMs" : 124 + }, { + "beanName" : "jacksonJsonMapper", + "durationMs" : 122 + }, { + "beanName" : "webMvcObservationFilter", + "durationMs" : 106 + } ], + "beanTimings" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : 0, + "wireDoctorGhostTrackingPostProcessor" : 8, + "healthEndpointGroups" : 16, + "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : 0, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : 0, + "hikariDataSourceMeterBinder" : 0, + "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" : 0, + "jdbcTemplate" : 6, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : 0, + "webEndpointPathMapper" : 5, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : 3, + "org.springframework.context.annotation.internalConfigurationAnnotationProcessor" : 43, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : 0, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : 0, + "&entityManagerFactory" : 2264, + "openEntityManagerInViewInterceptor" : 2, + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : 0, + "beanNameViewResolver" : 0, + "pathPatternRequestMatcherBuilder" : 0, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : 2, + "viewResolver" : 76, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : 0, + "projectingArgumentResolverBeanPostProcessor" : 21, + "tomcatServletWebServerFactoryCustomizer" : 1, + "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" : 1, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : 0, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : 2, + "pricingService" : 8, + "dataSourceScriptDatabaseInitializer" : 90, + "applicationTaskExecutorAsyncConfigurer" : 0, + "meterRegistryPostProcessor" : 46, + "endpointMediaTypes" : 1, + "jvmCompilationMetrics" : 0, + "jacksonMixinModuleEntries" : 3, + "orderController" : 185, + "jdbcConnectionDetailsHikariBeanPostProcessor" : 3, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : 0, + "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : 1, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration" : 0, + "repositoryTagsProvider" : 1, + "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" : 0, + "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" : 8, + "org.springframework.boot.context.internalConfigurationPropertiesBinder" : 1, + "dataSourcePoolMetadataMeterBinder" : 0, + "dbHealthContributor" : 9, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration" : 0, + "jpa.OrderRepository.fragments#0" : 2, + "catalogCacheWarmer" : 301, + "webServerFactoryCustomizerBeanPostProcessor" : 0, + "controllerEndpointHandlerMapping" : 6, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : 0, + "jdbcClient" : 1, + "observabilitySchedulingConfigurer" : 1, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : 0, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : 0, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration" : 0, + "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" : 0, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : 0, + "org.springframework.boot.persistence.autoconfigure.EntityScanPackages" : 0, + "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" : 2, + "conventionErrorViewResolver" : 0, + "wireDoctorGhostTracker" : 2, + "org.springframework.context.event.internalEventListenerProcessor" : 1, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" : 4, + "formContentFilter" : 4, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : 0, + "defaultViewResolver" : 5, + "routerFunctionMapping" : 7, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" : 349, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : 0, + "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" : 1, + "multipartResolver" : 2, + "healthEndpointWebExtension" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : 0, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : 0, + "conversionServicePostProcessor" : 6, + "webExposeExcludePropertyEndpointFilter" : 0, + "requestMappingHandlerMapping" : 52, + "lifecycleProcessor" : 2, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" : 0, + "org.springframework.aop.config.internalAutoProxyCreator" : 19, + "requestMappingHandlerAdapter" : 142, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : 0, + "tomcatMetricsBinder" : 0, + "wiredoctor-com.wiredoctor.WireDoctorProperties" : 4, + "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" : 21, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" : 0, + "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension" : 1, + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : 0, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : 0, + "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" : 1, + "sslMeterBinder" : 2, + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : 0, + "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" : 1, + "org.springframework.context.annotation.internalAutowiredAnnotationProcessor" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration" : 0, + "orderService" : 178, + "metricsRepositoryMethodInvocationListenerBeanPostProcessor" : 1, + "classLoaderMetrics" : 1, + "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" : 0, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" : 190, + "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" : 1, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : 5, + "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : 3, + "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration" : 0, + "springDataWebSettings" : 3, + "fileWatcher" : 1, + "sortResolver" : 3, + "stringHttpMessageConvertersCustomizer" : 2, + "springSecurityPathPatternParserBeanDefinitionRegistryPostProcessor" : 1, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : 5, + "standardJsonMapperBuilderCustomizer" : 28, + "thymeleafViewResolver" : 73, + "errorAttributes" : 1, + "beanNameHandlerMapping" : 4, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : 2, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : 0, + "delegatingApplicationListener" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" : 1, + "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter" : 4, + "org.springframework.data.web.config.SpringDataJacksonConfiguration" : 0, + "bootstrapExecutor" : 18, + "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration" : 9, + "flashMapManager" : 2, + "orderRepository" : 171, + "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration" : 0, + "jackson2EndpointJsonMapper" : 4, + "requestMatcherProvider" : 1, + "legacyExportService" : 19, + "healthHttpCodeStatusMapper" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : 0, + "metricsRepositoryMethodInvocationListener" : 7, + "uptimeMetrics" : 0, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" : 5, + "controllerExposeExcludePropertyEndpointFilter" : 0, + "jvmThreadMetrics" : 2, + "pathMappedEndpoints" : 63, + "auditService" : 6, + "standardJsonFactoryBuilderCustomizer" : 6, + "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar" : 0, + "jsonFactory" : 37, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : 0, + "managementServletContext" : 0, + "fileDescriptorMetrics" : 0, + "livenessStateHealthIndicator" : 4, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" : 0, + "org.springframework.transaction.config.internalTransactionalEventListenerFactory" : 0, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : 0, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration" : 0, + "mvcValidator" : 2, + "applicationAvailability" : 1, + "defaultTemplateResolver" : 17, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration" : 0, + "mvcResourceUrlProvider" : 2, + "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" : 1, + "sslInfo" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : 1, + "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" : 7, + "servletEndpointRegistrar" : 35, + "archivedReportExporter" : 7, + "org.springframework.boot.autoconfigure.AutoConfigurationPackages" : 8, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration" : 0, + "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" : 3, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : 1, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration" : 0, + "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" : 1, + "jackson3pageModule" : 2, + "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" : 3, + "hikariPoolDataSourceMetadataProvider" : 1, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : 1, + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : 0, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : 0, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : 0, + "org.springframework.data.web.config.SpringDataWebConfiguration" : 3, + "legacyImportService" : 14, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : 1, + "propertiesEndpointAccessResolver" : 1, + "errorPageRegistrarBeanPostProcessor" : 0, + "mvcConversionService" : 7, + "endpointJackson2ObjectMapperWebMvcConfigurer" : 7, + "initializeAuthenticationProviderBeanManagerConfigurer" : 1, + "org.springframework.context.annotation.internalPersistenceAnnotationProcessor" : 0, + "controllerEndpointDiscoverer" : 2, + "org.springframework.boot.context.properties.BoundConfigurationProperties" : 0, + "diskSpaceHealthIndicator" : 1, + "jvmMemoryMetrics" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : 0, + "mvcPathMatcher" : 0, + "handlerExceptionResolver" : 5, + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration" : 0, + "basicErrorController" : 4, + "pingHealthContributor" : 0, + "sslHealthIndicator" : 4, + "healthEndpointGroupMembershipValidator" : 2, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" : 0, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration" : 0, + "groupsHealthContributorNameValidator" : 0, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration" : 0, + "namedParameterJdbcTemplate" : 3, + "simpleAsyncTaskExecutorBuilder" : 1, + "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" : 3, + "spelValueExpressionResolver" : 0, + "org.springframework.scheduling.config.internalAsyncAnnotationProcessor" : 22, + "mvcViewResolver" : 2, + "simpleConfig" : 4, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration" : 0, + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : 0, + "requestDataValueProcessor" : 0, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : 0, + "observationRegistry" : 95, + "mvcUriComponentsContributor" : 2, + "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" : 0, + "webAccessPropertiesOperationFilter" : 1, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration" : 0, + "readinessStateHealthIndicator" : 1, + "objectPostProcessor" : 2, + "jpaSharedEM_entityManagerFactory" : 9, + "wiredoctorDemoApplication" : 0, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : 0, + "templateEngine" : 52, + "jackson3GeoModule" : 12, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration" : 0, + "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" : 2, + "platformTransactionManagerCustomizers" : 3, + "securityFilterChainRegistration" : 7, + "data-jpa.repository-aot-processor#0" : 5, + "endpointCachingOperationInvokerAdvisor" : 2, + "defaultServletHandlerMapping" : 0, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : 2, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : 0, + "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" : 1, + "persistenceExceptionTranslationPostProcessor" : 2, + "characterEncodingFilter" : 5, + "observationRegistryPostProcessor" : 4, + "sortCustomizer" : 0, + "webEndpointDiscoverer" : 26, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" : 0, + "org.springframework.security.config.annotation.web.configuration.ObservationConfiguration" : 0, + "preserveErrorControllerTargetClassPostProcessor" : 0, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : 0, + "logbackMetrics" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration" : 0, + "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties" : 1, + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : 0, + "propertySourcesPlaceholderConfigurer" : 1, + "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration" : 6, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : 0, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : 0, + "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties" : 1, + "methodValidationPostProcessor" : 29, + "wireDoctorGhostReportWriter" : 5, + "jsonComponentModule" : 3, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" : 31, + "entityManagerFactoryBuilder" : 36, + "org.springframework.context.event.internalEventListenerFactory" : 0, + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration" : 0, + "webSocketWebServerCustomizer" : 1, + "clientConvertersCustomizer" : 1, + "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" : 2, + "springSecurityFilterChain" : 14, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : 23, + "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" : 1, + "healthStatusAggregator" : 3, + "endpointJsonMapper" : 1, + "enableGlobalAuthenticationAutowiredConfigurer" : 1, + "transactionTemplate" : 1, + "mvcUrlPathHelper" : 0, + "jsonMapperBuilder" : 76, + "servletWebServerFactoryCustomizer" : 27, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : 0, + "inMemoryUserDetailsManager" : 7, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : 0, + "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" : 16, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : 0, + "jpa.named-queries#0" : 2, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration" : 0, + "filterChainDecoratorPostProcessor" : 0, + "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : 0, + "metricsObservationHandlerGroup" : 2, + "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" : 14, + "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" : 4, + "transactionInterceptor" : 8, + "simpleMeterRegistry" : 65, + "authenticationEventPublisher" : 6, + "bootstrapExecutorAliasPostProcessor" : 0, + "startupTimeMetrics" : 1, + "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" : 1, + "multipartConfigElement" : 7, + "requestContextFilter" : 2, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration" : 0, + "pageableResolver" : 3, + "availabilityProbesHealthEndpointGroupsPostProcessor" : 0, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : 0, + "handlerFunctionAdapter" : 1, + "localeResolver" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" : 1, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration" : 0, + "jvmHeapPressureMetrics" : 3, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : 0, + "welcomePageNotAcceptableHandlerMapping" : 4, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration" : 0, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : 0, + "endpointOperationParameterMapper" : 3, + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration" : 0, + "spring.transaction-org.springframework.boot.transaction.autoconfigure.TransactionProperties" : 0, + "jpaVendorAdapter" : 30, + "sslBundleRegistry" : 13, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : 15, + "wireDoctorAnalyzer" : 2, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : 0, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : 0, + "jacksonGeoModule" : 4, + "meterRegistryCloser" : 2, + "mvcContentNegotiationManager" : 173, + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : 0, + "httpRequestHandlerAdapter" : 0, + "asyncMailer" : 10, + "org.springframework.aop.framework.autoproxy.defaultProxyConfig" : 1, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration" : 0, + "sslPropertiesSslBundleRegistrar" : 3, + "org.springframework.context.annotation.internalCommonAnnotationProcessor" : 3, + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" : 0, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : 0, + "defaultMeterObservationHandler" : 75, + "notificationService" : 6, + "simpleControllerHandlerAdapter" : 0, + "resourceHandlerMapping" : 13, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : 0, + "simpleAsyncTaskSchedulerBuilder" : 1, + "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : 0, + "healthContributorRegistry" : 29, + "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" : 0, + "org.springframework.transaction.config.internalTransactionAdvisor" : 34, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : 0, + "eagerJpaMetamodelCacheCleanup" : 0, + "propertiesObservationFilter" : 7, + "persistenceManagedTypes" : 8, + "micrometerClock" : 1, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : 0, + "propertiesMeterFilter" : 9, + "problemDetailJsonMapperBuilderCustomizer" : 1, + "demoSecurityConfig" : 1, + "jacksonJsonMapper" : 122, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : 0, + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : 0, + "endpointJsonMapperWebMvcConfigurer" : 2, + "diskSpaceMetrics" : 0, + "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup" : 0, + "servletEndpointDiscoverer" : 19, + "metricsHttpServerUriTagFilter" : 4, + "eagerTaskExecutorMetrics" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration" : 0, + "privilegeEvaluator" : 0, + "jacksonMixinModule" : 6, + "healthEndpoint" : 36, + "viewControllerHandlerMapping" : 0, + "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : 2, + "mvcPatternParser" : 2, + "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor" : 0, + "dispatcherServlet" : 21, + "jvmInfoMetrics" : 0, + "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" : 4, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : 0, + "demoChain" : 396, + "webEndpointServletHandlerMapping" : 18, + "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor" : 1, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : 0, + "threadPoolTaskExecutorBuilder" : 7, + "processorMetrics" : 7, + "inventoryService" : 7, + "transactionAttributeSource" : 5, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration" : 0, + "transactionExecutionListeners" : 1, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : 0, + "serverConvertersCustomizer" : 3, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : 0, + "transactionManager" : 6, + "org.springframework.data.web.config.SpringDataJackson3Configuration" : 5, + "errorPageCustomizer" : 40, + "openEntityManagerInViewInterceptorConfigurer" : 4, + "tomcatWebServerFactoryCustomizer" : 9, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : 0, + "authenticationManagerPostProcessor" : 1, + "threadPoolTaskSchedulerBuilder" : 4, + "viewNameTranslator" : 2, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" : 0, + "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" : 7, + "pageableCustomizer" : 0, + "dispatcherServletRegistration" : 38, + "dataSource" : 81, + "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" : 1, + "healthEndpointGroupsBeanPostProcessor" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : 0, + "com.wiredoctor.WireDoctorAutoConfiguration" : 0, + "jpaMappingContext" : 21, + "tomcatServletWebServerFactory" : 186, + "mvcApiVersionStrategy" : 5, + "error" : 0, + "webAuthorizationManagerPostProcessor" : 2, + "jdbcConnectionDetails" : 2, + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : 0, + "jvmGcMetrics" : 5, + "offsetResolver" : 1, + "initializeUserDetailsBeanManagerConfigurer" : 0, + "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" : 4, + "jacksonJsonHttpMessageConvertersCustomizer" : 124, + "healthEndpointWebMvcHandlerMapping" : 6, + "defaultValidator" : 9, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration" : 0, + "welcomePageHandlerMapping" : 22, + "servletExposeExcludePropertyEndpointFilter" : 2, + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration" : 0, + "authenticationManagerBuilder" : 9, + "webMvcObservationFilter" : 106, + "securityDialect" : 7, + "pageModule" : 1, + "webSecurityExpressionHandler" : 15 + }, + "slowBeanThreshold" : 100, + "totalStartupMs" : 7210, + "beanCategories" : { + "totalBeans" : 429, + "roleApplication" : 397, + "roleSupport" : 1, + "roleInfrastructure" : 31, + "userDefined" : 23, + "frameworkOwned" : 406 + }, + "proxies" : { + "cglibCount" : 18, + "jdkCount" : 0, + "cglibBeans" : [ "archivedReportExporter", "legacyExportService", "legacyImportService", "asyncMailer", "auditService", "catalogCacheWarmer", "inventoryService", "notificationService", "orderController", "orderService", "pricingService", "dataSource", "jsonFactory", "jacksonJsonMapper", "securityDialect", "thymeleafViewResolver", "defaultTemplateResolver", "templateEngine" ], + "jdkBeans" : [ ], + "notInstantiatedSkipped" : 4 + }, + "ghostCandidates" : { + "confidence" : "LOW", + "disclaimer" : "Heuristic: bean was eagerly instantiated, has no incoming dependencies, and no known entry point was detected from its metadata. NOT proof of dead code — reflective access, programmatic getBean() lookups and framework-collected usages are invisible to this analysis.", + "count" : 2, + "beans" : [ "archivedReportExporter", "catalogCacheWarmer" ], + "entryPointsExcluded" : 1, + "notInstantiatedExcluded" : 0 + }, + "smells" : { + "highFanIn" : [ { + "beanName" : "auditService", + "inDegree" : 4, + "dependents" : [ "inventoryService", "notificationService", "orderService", "pricingService" ] + }, { + "beanName" : "pricingService", + "inDegree" : 2, + "dependents" : [ "catalogCacheWarmer", "orderService" ] + }, { + "beanName" : "asyncMailer", + "inDegree" : 1, + "dependents" : [ "notificationService" ] + }, { + "beanName" : "demoSecurityConfig", + "inDegree" : 1, + "dependents" : [ "demoChain" ] + }, { + "beanName" : "inventoryService", + "inDegree" : 1, + "dependents" : [ "orderService" ] + }, { + "beanName" : "legacyExportService", + "inDegree" : 1, + "dependents" : [ "legacyImportService" ] + }, { + "beanName" : "legacyImportService", + "inDegree" : 1, + "dependents" : [ "legacyExportService" ] + }, { + "beanName" : "notificationService", + "inDegree" : 1, + "dependents" : [ "orderService" ] + }, { + "beanName" : "orderRepository", + "inDegree" : 1, + "dependents" : [ "orderService" ] + }, { + "beanName" : "orderService", + "inDegree" : 1, + "dependents" : [ "orderController" ] + } ], + "highFanOut" : [ { + "beanName" : "orderService", + "outDegree" : 5, + "dependencies" : [ "orderRepository", "pricingService", "inventoryService", "notificationService", "auditService" ] + }, { + "beanName" : "orderRepository", + "outDegree" : 4, + "dependencies" : [ "jpa.named-queries#0", "jpa.OrderRepository.fragments#0", "jpaSharedEM_entityManagerFactory", "jpaMappingContext" ] + }, { + "beanName" : "notificationService", + "outDegree" : 2, + "dependencies" : [ "auditService", "asyncMailer" ] + }, { + "beanName" : "catalogCacheWarmer", + "outDegree" : 1, + "dependencies" : [ "pricingService" ] + }, { + "beanName" : "inventoryService", + "outDegree" : 1, + "dependencies" : [ "auditService" ] + }, { + "beanName" : "legacyExportService", + "outDegree" : 1, + "dependencies" : [ "legacyImportService" ] + }, { + "beanName" : "legacyImportService", + "outDegree" : 1, + "dependencies" : [ "legacyExportService" ] + }, { + "beanName" : "orderController", + "outDegree" : 1, + "dependencies" : [ "orderService" ] + }, { + "beanName" : "pricingService", + "outDegree" : 1, + "dependencies" : [ "auditService" ] + } ], + "unstable" : [ { + "beanName" : "orderService", + "instability" : 0.83, + "fanIn" : 1, + "fanOut" : 5 + }, { + "beanName" : "orderRepository", + "instability" : 0.8, + "fanIn" : 1, + "fanOut" : 4 + } ], + "frameworkFiltered" : true, + "fanIn" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : 1, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : 2, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : 1, + "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : 2, + "healthEndpointGroups" : 3, + "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" : 1, + "webEndpointDiscoverer" : 3, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : 1, + "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" : 1, + "jdbcTemplate" : 1, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : 4, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : 8, + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : 1, + "openEntityManagerInViewInterceptor" : 1, + "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration" : 2, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : 1, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : 1, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : 1, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : 3, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : 1, + "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties" : 2, + "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" : 1, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" : 26, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : 1, + "entityManagerFactoryBuilder" : 1, + "pricingService" : 2, + "dataSourceScriptDatabaseInitializer" : 4, + "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" : 2, + "endpointMediaTypes" : 2, + "jacksonMixinModuleEntries" : 1, + "springSecurityFilterChain" : 2, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : 2, + "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" : 1, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : 1, + "endpointJsonMapper" : 1, + "enableGlobalAuthenticationAutowiredConfigurer" : 1, + "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : 1, + "jsonMapperBuilder" : 1, + "repositoryTagsProvider" : 1, + "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" : 1, + "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" : 1, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : 1, + "dbHealthContributor" : 1, + "jpa.OrderRepository.fragments#0" : 1, + "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" : 3, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : 3, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : 1, + "jpa.named-queries#0" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : 5, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : 3, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : 1, + "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" : 2, + "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" : 1, + "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" : 1, + "transactionInterceptor" : 1, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : 3, + "simpleMeterRegistry" : 3, + "entityManagerFactory" : 1, + "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" : 3, + "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" : 1, + "wireDoctorGhostTracker" : 2, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" : 3, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : 7, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : 1, + "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" : 2, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : 1, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : 1, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" : 6, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : 1, + "requestMappingHandlerAdapter" : 1, + "wiredoctor-com.wiredoctor.WireDoctorProperties" : 2, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : 2, + "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" : 3, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : 1, + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : 1, + "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : 1, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration" : 1, + "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : 1, + "endpointOperationParameterMapper" : 1, + "(inner bean)#296ddfc7" : 1, + "orderService" : 1, + "jpaVendorAdapter" : 1, + "sslBundleRegistry" : 2, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : 4, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : 1, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : 1, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" : 1, + "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" : 2, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : 3, + "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : 1, + "fileWatcher" : 1, + "springDataWebSettings" : 2, + "mvcContentNegotiationManager" : 6, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : 2, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : 1, + "environment" : 10, + "errorAttributes" : 1, + "asyncMailer" : 1, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : 2, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : 1, + "notificationService" : 1, + "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" : 11, + "org.springframework.data.web.config.SpringDataJacksonConfiguration" : 2, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : 1, + "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : 1, + "(inner bean)#915c47b" : 1, + "healthContributorRegistry" : 3, + "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" : 1, + "orderRepository" : 1, + "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration" : 1, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : 1, + "jackson2EndpointJsonMapper" : 1, + "persistenceManagedTypes" : 1, + "micrometerClock" : 2, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : 1, + "legacyExportService" : 1, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : 2, + "demoSecurityConfig" : 1, + "jacksonJsonMapper" : 1, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : 1, + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : 2, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" : 2, + "endpointJsonMapperWebMvcConfigurer" : 1, + "auditService" : 4, + "jsonFactory" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : 4, + "livenessStateHealthIndicator" : 1, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : 1, + "servletEndpointDiscoverer" : 3, + "mvcValidator" : 1, + "applicationAvailability" : 2, + "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" : 1, + "mvcResourceUrlProvider" : 7, + "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : 2, + "sslInfo" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : 1, + "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" : 2, + "dispatcherServlet" : 1, + "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" : 4, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : 3, + "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" : 1, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : 2, + "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" : 6, + "demoChain" : 1, + "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" : 3, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : 2, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : 1, + "threadPoolTaskExecutorBuilder" : 1, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : 1, + "inventoryService" : 1, + "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" : 20, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : 1, + "transactionAttributeSource" : 2, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : 1, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : 1, + "org.springframework.data.web.config.SpringDataWebConfiguration" : 4, + "legacyImportService" : 1, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : 1, + "transactionManager" : 1, + "org.springframework.data.web.config.SpringDataJackson3Configuration" : 2, + "propertiesEndpointAccessResolver" : 3, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : 1, + "mvcConversionService" : 9, + "endpointJackson2ObjectMapperWebMvcConfigurer" : 1, + "initializeAuthenticationProviderBeanManagerConfigurer" : 1, + "openEntityManagerInViewInterceptorConfigurer" : 1, + "controllerEndpointDiscoverer" : 3, + "diskSpaceHealthIndicator" : 1, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : 3, + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" : 1, + "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" : 2, + "pingHealthContributor" : 1, + "dispatcherServletRegistration" : 4, + "dataSource" : 3, + "sslHealthIndicator" : 1, + "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" : 6, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : 1, + "com.wiredoctor.WireDoctorAutoConfiguration" : 1, + "jpaMappingContext" : 1, + "groupsHealthContributorNameValidator" : 1, + "mvcApiVersionStrategy" : 2, + "namedParameterJdbcTemplate" : 1, + "jdbcConnectionDetails" : 1, + "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" : 5, + "initializeUserDetailsBeanManagerConfigurer" : 1, + "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" : 4, + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : 1, + "simpleConfig" : 1, + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : 1, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : 1, + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration" : 1, + "observationRegistry" : 2, + "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" : 1, + "readinessStateHealthIndicator" : 1, + "jpaSharedEM_entityManagerFactory" : 1, + "objectPostProcessor" : 4, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : 1, + "templateEngine" : 1, + "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" : 1 + } + }, + "dependencies" : { + "totalBeans" : 429, + "totalEdges" : 436, + "cyclesCount" : 1, + "cycles" : [ [ "legacyImportService", "legacyExportService" ] ], + "orphanBeansCount" : 3, + "orphanBeans" : [ "archivedReportExporter", "catalogCacheWarmer", "orderController" ], + "graph" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : [ ], + "wireDoctorGhostTrackingPostProcessor" : [ "wireDoctorGhostTracker", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "environment" ], + "applicationTaskExecutor" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration", "threadPoolTaskExecutorBuilder" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : [ ], + "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" : [ ], + "healthEndpointGroups" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : [ ], + "hikariDataSourceMeterBinder" : [ "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" ], + "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" : [ ], + "jdbcTemplate" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration", "dataSource", "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" ], + "webEndpointPathMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : [ ], + "org.springframework.context.annotation.internalConfigurationAnnotationProcessor" : [ "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" ], + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : [ ], + "openEntityManagerInViewInterceptor" : [ "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" ], + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : [ ], + "beanNameViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" ], + "pathPatternRequestMatcherBuilder" : [ "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration", "dispatcherServletRegistration" ], + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : [ "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" ], + "viewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : [ ], + "projectingArgumentResolverBeanPostProcessor" : [ ], + "tomcatServletWebServerFactoryCustomizer" : [ "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration", "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" ], + "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" : [ ], + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : [ "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "pricingService" : [ "auditService" ], + "dataSourceScriptDatabaseInitializer" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration", "dataSource", "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" ], + "applicationTaskExecutorAsyncConfigurer" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "meterRegistryPostProcessor" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "endpointMediaTypes" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "jacksonMixinModuleEntries" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "jvmCompilationMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "orderController" : [ "orderService" ], + "jdbcConnectionDetailsHikariBeanPostProcessor" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : [ ], + "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : [ ], + "repositoryTagsProvider" : [ "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" ], + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration" : [ ], + "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" : [ ], + "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" : [ ], + "org.springframework.boot.context.internalConfigurationPropertiesBinder" : [ ], + "dbHealthContributor" : [ "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" ], + "dataSourcePoolMetadataMeterBinder" : [ "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration" : [ ], + "jpa.OrderRepository.fragments#0" : [ ], + "catalogCacheWarmer" : [ "pricingService" ], + "webServerFactoryCustomizerBeanPostProcessor" : [ ], + "controllerEndpointHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "controllerEndpointDiscoverer", "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "propertiesEndpointAccessResolver" ], + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : [ ], + "jdbcClient" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration", "namedParameterJdbcTemplate" ], + "observabilitySchedulingConfigurer" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration", "observationRegistry" ], + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : [ ], + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration" : [ ], + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : [ ], + "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" : [ ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : [ ], + "conventionErrorViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" ], + "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" : [ ], + "org.springframework.context.event.internalEventListenerProcessor" : [ ], + "wireDoctorGhostTracker" : [ "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" : [ "spring.web-org.springframework.boot.autoconfigure.web.WebProperties", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "formContentFilter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : [ ], + "defaultViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" ], + "routerFunctionMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "mvcResourceUrlProvider", "mvcApiVersionStrategy" ], + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" : [ "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : [ ], + "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" : [ ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : [ ], + "healthEndpointWebExtension" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration", "healthContributorRegistry", "healthEndpointGroups", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration" : [ ], + "multipartResolver" : [ "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : [ ], + "conversionServicePostProcessor" : [ ], + "requestMappingHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager", "mvcApiVersionStrategy", "mvcConversionService", "mvcResourceUrlProvider" ], + "webExposeExcludePropertyEndpointFilter" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "lifecycleProcessor" : [ "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration", "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" : [ ], + "org.springframework.aop.config.internalAutoProxyCreator" : [ ], + "requestMappingHandlerAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager", "mvcConversionService", "mvcValidator" ], + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : [ ], + "tomcatMetricsBinder" : [ "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration", "simpleMeterRegistry" ], + "wiredoctor-com.wiredoctor.WireDoctorProperties" : [ ], + "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" : [ ], + "mvcHandlerMappingIntrospector" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" : [ ], + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : [ ], + "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension" : [ ], + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : [ ], + "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" : [ ], + "sslMeterBinder" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration", "sslBundleRegistry" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : [ ], + "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" : [ ], + "org.springframework.context.annotation.internalAutowiredAnnotationProcessor" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration" : [ ], + "orderService" : [ "orderRepository", "pricingService", "inventoryService", "notificationService", "auditService" ], + "metricsRepositoryMethodInvocationListenerBeanPostProcessor" : [ ], + "classLoaderMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" : [ ], + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" : [ "objectPostProcessor", "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration", "mvcContentNegotiationManager" ], + "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" : [ ], + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" ], + "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : [ ], + "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration" : [ ], + "fileWatcher" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" ], + "springDataWebSettings" : [ "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" ], + "sortResolver" : [ "org.springframework.data.web.config.SpringDataWebConfiguration" ], + "stringHttpMessageConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" ], + "springSecurityPathPatternParserBeanDefinitionRegistryPostProcessor" : [ ], + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : [ "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" ], + "standardJsonMapperBuilderCustomizer" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "thymeleafViewResolver" : [ "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration", "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties", "templateEngine" ], + "errorAttributes" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" ], + "beanNameHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "mvcResourceUrlProvider" ], + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : [ "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" ], + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : [ ], + "delegatingApplicationListener" : [ ], + "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" : [ ], + "org.springframework.data.web.config.SpringDataJacksonConfiguration" : [ "springDataWebSettings" ], + "flashMapManager" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration" : [ "simpleMeterRegistry" ], + "orderRepository" : [ "jpa.named-queries#0", "jpa.OrderRepository.fragments#0", "jpaSharedEM_entityManagerFactory", "jpaMappingContext" ], + "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration" : [ ], + "jackson2EndpointJsonMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" ], + "requestMatcherProvider" : [ "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration", "dispatcherServletRegistration" ], + "legacyExportService" : [ "legacyImportService" ], + "healthHttpCodeStatusMapper" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : [ ], + "metricsRepositoryMethodInvocationListener" : [ "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration", "repositoryTagsProvider" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" : [ "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" ], + "uptimeMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" ], + "controllerExposeExcludePropertyEndpointFilter" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "pathMappedEndpoints" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "servletEndpointDiscoverer", "webEndpointDiscoverer", "controllerEndpointDiscoverer" ], + "jvmThreadMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "auditService" : [ ], + "standardJsonFactoryBuilderCustomizer" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" ], + "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar" : [ ], + "jsonFactory" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : [ ], + "managementServletContext" : [ "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" ], + "fileDescriptorMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" ], + "livenessStateHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "applicationAvailability" ], + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" : [ ], + "org.springframework.transaction.config.internalTransactionalEventListenerFactory" : [ ], + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : [ ], + "mvcValidator" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration" : [ ], + "applicationAvailability" : [ "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" ], + "defaultTemplateResolver" : [ "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" ], + "mvcResourceUrlProvider" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" : [ ], + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration" : [ ], + "sslInfo" : [ "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration", "sslBundleRegistry" ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : [ "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" ], + "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" : [ ], + "servletEndpointRegistrar" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "servletEndpointDiscoverer", "dispatcherServletRegistration", "propertiesEndpointAccessResolver" ], + "archivedReportExporter" : [ ], + "org.springframework.boot.autoconfigure.AutoConfigurationPackages" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration" : [ ], + "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" : [ ], + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : [ "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration" : [ ], + "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" : [ ], + "jackson3pageModule" : [ "org.springframework.data.web.config.SpringDataJackson3Configuration" ], + "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" : [ ], + "hikariPoolDataSourceMetadataProvider" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" ], + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : [ "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" ], + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : [ ], + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : [ ], + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : [ ], + "org.springframework.data.web.config.SpringDataWebConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "legacyImportService" : [ "legacyExportService" ], + "propertiesEndpointAccessResolver" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration", "environment" ], + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : [ ], + "errorPageRegistrarBeanPostProcessor" : [ ], + "mvcConversionService" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "initializeAuthenticationProviderBeanManagerConfigurer" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "endpointJackson2ObjectMapperWebMvcConfigurer" : [ "jackson2EndpointJsonMapper" ], + "org.springframework.context.annotation.internalPersistenceAnnotationProcessor" : [ ], + "controllerEndpointDiscoverer" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "org.springframework.boot.context.properties.BoundConfigurationProperties" : [ ], + "diskSpaceHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration", "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" ], + "jvmMemoryMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : [ ], + "mvcPathMatcher" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "handlerExceptionResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager" ], + "basicErrorController" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration", "errorAttributes" ], + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration" : [ ], + "pingHealthContributor" : [ "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" ], + "sslHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration", "sslInfo", "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" ], + "healthEndpointGroupMembershipValidator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties", "healthContributorRegistry" ], + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" ], + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration" : [ ], + "groupsHealthContributorNameValidator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration" : [ ], + "jpaContext" : [ ], + "namedParameterJdbcTemplate" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration", "jdbcTemplate" ], + "simpleAsyncTaskExecutorBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" ], + "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" : [ ], + "spelValueExpressionResolver" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" ], + "org.springframework.scheduling.config.internalAsyncAnnotationProcessor" : [ "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" ], + "mvcViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager" ], + "simpleConfig" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration", "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" ], + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration" : [ ], + "requestDataValueProcessor" : [ "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" ], + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : [ ], + "observationRegistry" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" ], + "mvcUriComponentsContributor" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "requestMappingHandlerAdapter" ], + "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" : [ ], + "webAccessPropertiesOperationFilter" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "propertiesEndpointAccessResolver" ], + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration" : [ ], + "readinessStateHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "applicationAvailability" ], + "jpaSharedEM_entityManagerFactory" : [ "entityManagerFactory" ], + "objectPostProcessor" : [ "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "wiredoctorDemoApplication" : [ ], + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : [ ], + "jackson3GeoModule" : [ "org.springframework.data.web.config.SpringDataJackson3Configuration" ], + "templateEngine" : [ "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration", "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration" : [ ], + "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" : [ ], + "platformTransactionManagerCustomizers" : [ "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" ], + "securityFilterChainRegistration" : [ "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration", "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" ], + "data-jpa.repository-aot-processor#0" : [ ], + "endpointCachingOperationInvokerAdvisor" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration", "environment" ], + "defaultServletHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : [ "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" ], + "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : [ ], + "persistenceExceptionTranslationPostProcessor" : [ "environment" ], + "observationRegistryPostProcessor" : [ ], + "characterEncodingFilter" : [ "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration", "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" ], + "sortCustomizer" : [ "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" ], + "webEndpointDiscoverer" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "endpointOperationParameterMapper", "endpointMediaTypes" ], + "org.springframework.security.config.annotation.web.configuration.ObservationConfiguration" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" : [ ], + "preserveErrorControllerTargetClassPostProcessor" : [ ], + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : [ ], + "logbackMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" ], + "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties" : [ ], + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : [ ], + "propertySourcesPlaceholderConfigurer" : [ ], + "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration" : [ "enableGlobalAuthenticationAutowiredConfigurer", "initializeUserDetailsBeanManagerConfigurer", "initializeAuthenticationProviderBeanManagerConfigurer", "objectPostProcessor" ], + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : [ ], + "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties" : [ ], + "methodValidationPostProcessor" : [ "environment" ], + "wireDoctorGhostReportWriter" : [ "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration", "wireDoctorGhostTracker", "wiredoctor-com.wiredoctor.WireDoctorProperties" ], + "jsonComponentModule" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" : [ "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", "org.springframework.data.web.config.SpringDataWebConfiguration", "openEntityManagerInViewInterceptorConfigurer", "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration", "endpointJsonMapperWebMvcConfigurer", "endpointJackson2ObjectMapperWebMvcConfigurer" ], + "entityManagerFactoryBuilder" : [ "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration", "jpaVendorAdapter", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "org.springframework.context.event.internalEventListenerFactory" : [ ], + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration" : [ ], + "webSocketWebServerCustomizer" : [ "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" ], + "clientConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" ], + "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" : [ ], + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : [ "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" ], + "springSecurityFilterChain" : [ "(inner bean)#296ddfc7", "(inner bean)#915c47b" ], + "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" : [ ], + "healthStatusAggregator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "endpointJsonMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" ], + "enableGlobalAuthenticationAutowiredConfigurer" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "mvcUrlPathHelper" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "jsonMapperBuilder" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", "jsonFactory" ], + "servletWebServerFactoryCustomizer" : [ "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration", "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" ], + "transactionTemplate" : [ "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration", "transactionManager" ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : [ ], + "inMemoryUserDetailsManager" : [ "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration", "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" ], + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : [ ], + "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" : [ ], + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : [ ], + "jpa.named-queries#0" : [ ], + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : [ ], + "filterChainDecoratorPostProcessor" : [ ], + "metricsObservationHandlerGroup" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" ], + "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" : [ "objectPostProcessor", "demoChain" ], + "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" : [ ], + "transactionInterceptor" : [ "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration", "transactionAttributeSource" ], + "simpleMeterRegistry" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration", "simpleConfig", "micrometerClock" ], + "authenticationEventPublisher" : [ "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "bootstrapExecutorAliasPostProcessor" : [ ], + "entityManagerFactory" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration", "entityManagerFactoryBuilder", "persistenceManagedTypes" ], + "startupTimeMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration", "simpleMeterRegistry" ], + "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" : [ ], + "multipartConfigElement" : [ "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" ], + "requestContextFilter" : [ ], + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration" : [ ], + "pageableResolver" : [ "org.springframework.data.web.config.SpringDataWebConfiguration" ], + "availabilityProbesHealthEndpointGroupsPostProcessor" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "environment" ], + "localeResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "handlerFunctionAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" : [ ], + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration" : [ "environment" ], + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : [ ], + "jvmHeapPressureMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "welcomePageNotAcceptableHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "mvcConversionService", "mvcResourceUrlProvider" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration" : [ ], + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : [ ], + "endpointOperationParameterMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" ], + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration" : [ ], + "sslBundleRegistry" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" ], + "spring.transaction-org.springframework.boot.transaction.autoconfigure.TransactionProperties" : [ ], + "jpaVendorAdapter" : [ "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" ], + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : [ "dataSource", "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties", "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : [ ], + "wireDoctorAnalyzer" : [ "com.wiredoctor.WireDoctorAutoConfiguration", "wiredoctor-com.wiredoctor.WireDoctorProperties" ], + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : [ ], + "jacksonGeoModule" : [ "org.springframework.data.web.config.SpringDataJacksonConfiguration" ], + "meterRegistryCloser" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "mvcContentNegotiationManager" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : [ ], + "httpRequestHandlerAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "asyncMailer" : [ ], + "org.springframework.aop.framework.autoproxy.defaultProxyConfig" : [ ], + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration" : [ ], + "sslPropertiesSslBundleRegistrar" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration", "fileWatcher" ], + "org.springframework.context.annotation.internalCommonAnnotationProcessor" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : [ ], + "defaultMeterObservationHandler" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "micrometerClock", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" : [ ], + "notificationService" : [ "auditService", "asyncMailer" ], + "resourceHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager", "mvcConversionService", "mvcResourceUrlProvider" ], + "simpleControllerHandlerAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : [ ], + "simpleAsyncTaskSchedulerBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" ], + "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : [ ], + "healthContributorRegistry" : [ "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration", "livenessStateHealthIndicator", "readinessStateHealthIndicator", "diskSpaceHealthIndicator", "sslHealthIndicator", "pingHealthContributor", "dbHealthContributor", "groupsHealthContributorNameValidator" ], + "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" : [ ], + "org.springframework.transaction.config.internalTransactionAdvisor" : [ "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration", "transactionAttributeSource", "transactionInterceptor" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : [ ], + "eagerJpaMetamodelCacheCleanup" : [ ], + "propertiesObservationFilter" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" ], + "micrometerClock" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" ], + "persistenceManagedTypes" : [ "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : [ ], + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : [ "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" ], + "propertiesMeterFilter" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "demoSecurityConfig" : [ ], + "problemDetailJsonMapperBuilderCustomizer" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : [ ], + "jacksonJsonMapper" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", "jsonMapperBuilder" ], + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : [ ], + "endpointJsonMapperWebMvcConfigurer" : [ "endpointJsonMapper" ], + "diskSpaceMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup" : [ ], + "servletEndpointDiscoverer" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "metricsHttpServerUriTagFilter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "eagerTaskExecutorMetrics" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration" : [ ], + "jacksonMixinModule" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "jacksonMixinModuleEntries" ], + "privilegeEvaluator" : [ "springSecurityFilterChain", "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" ], + "healthEndpoint" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "healthContributorRegistry", "healthEndpointGroups", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : [ ], + "viewControllerHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "mvcResourceUrlProvider" ], + "mvcPatternParser" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor" : [ ], + "dispatcherServlet" : [ "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" ], + "jvmInfoMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : [ ], + "demoChain" : [ "demoSecurityConfig", "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" ], + "webEndpointServletHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "webEndpointDiscoverer", "servletEndpointDiscoverer", "controllerEndpointDiscoverer", "endpointMediaTypes", "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "environment" ], + "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor" : [ ], + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : [ ], + "threadPoolTaskExecutorBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration", "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : [ ], + "processorMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" ], + "inventoryService" : [ "auditService" ], + "transactionAttributeSource" : [ "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration" : [ ], + "transactionExecutionListeners" : [ "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" ], + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : [ ], + "serverConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : [ ], + "org.springframework.data.web.config.SpringDataJackson3Configuration" : [ "springDataWebSettings" ], + "transactionManager" : [ "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" ], + "errorPageCustomizer" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration", "dispatcherServletRegistration" ], + "openEntityManagerInViewInterceptorConfigurer" : [ "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration", "openEntityManagerInViewInterceptor" ], + "tomcatWebServerFactoryCustomizer" : [ "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration", "environment", "server-org.springframework.boot.web.server.autoconfigure.ServerProperties", "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : [ ], + "authenticationManagerPostProcessor" : [ ], + "threadPoolTaskSchedulerBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration", "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" ], + "viewNameTranslator" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" : [ ], + "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" : [ ], + "dispatcherServletRegistration" : [ "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration", "dispatcherServlet", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" ], + "pageableCustomizer" : [ "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" ], + "dataSource" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari", "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties", "jdbcConnectionDetails", "environment" ], + "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" : [ ], + "healthEndpointGroupsBeanPostProcessor" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : [ ], + "com.wiredoctor.WireDoctorAutoConfiguration" : [ ], + "jpaMappingContext" : [ ], + "tomcatServletWebServerFactory" : [ "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" ], + "mvcApiVersionStrategy" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "error" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" ], + "webAuthorizationManagerPostProcessor" : [ ], + "jdbcConnectionDetails" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration", "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" ], + "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" : [ ], + "offsetResolver" : [ "org.springframework.data.web.config.SpringDataWebConfiguration" ], + "jvmGcMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : [ ], + "initializeUserDetailsBeanManagerConfigurer" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "jacksonJsonHttpMessageConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration", "jacksonJsonMapper" ], + "healthEndpointWebMvcHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration", "webEndpointDiscoverer", "healthEndpointGroups" ], + "defaultValidator" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "welcomePageHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "mvcConversionService", "mvcResourceUrlProvider" ], + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration" : [ ], + "servletExposeExcludePropertyEndpointFilter" : [ "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" ], + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration" : [ ], + "authenticationManagerBuilder" : [ "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration", "objectPostProcessor", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "webMvcObservationFilter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration", "observationRegistry", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" ], + "securityDialect" : [ "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" ], + "pageModule" : [ "org.springframework.data.web.config.SpringDataJacksonConfiguration" ], + "webSecurityExpressionHandler" : [ "springSecurityFilterChain", "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" ] + }, + "graphTruncated" : false + }, + "lazySuggestions" : [ { + "beanName" : "legacyExportService", + "breaksCycles" : [ 0 ], + "downstreamImpact" : 1 + }, { + "beanName" : "legacyImportService", + "breaksCycles" : [ 0 ], + "downstreamImpact" : 1 + } ], + "criticalPath" : { + "available" : true, + "totalMs" : 1179, + "percentOfReadiness" : 16.4, + "path" : [ { + "beanName" : "jackson2EndpointJsonMapper", + "ownMs" : 4, + "cumulativeMs" : 4 + }, { + "beanName" : "endpointJackson2ObjectMapperWebMvcConfigurer", + "ownMs" : 7, + "cumulativeMs" : 11 + }, { + "beanName" : "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", + "ownMs" : 31, + "cumulativeMs" : 42 + }, { + "beanName" : "mvcContentNegotiationManager", + "ownMs" : 173, + "cumulativeMs" : 215 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration", + "ownMs" : 190, + "cumulativeMs" : 405 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", + "ownMs" : 349, + "cumulativeMs" : 754 + }, { + "beanName" : "demoChain", + "ownMs" : 396, + "cumulativeMs" : 1150 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration", + "ownMs" : 14, + "cumulativeMs" : 1164 + }, { + "beanName" : "webSecurityExpressionHandler", + "ownMs" : 15, + "cumulativeMs" : 1179 + } ], + "disclaimer" : "Instantiation-weighted approximation; parallel init and background threads are not modeled." + }, + "conditions" : { + "com.wiredoctor.WireDoctorAutoConfiguration" : { + "outcome" : "matched" + }, + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.audit.AuditAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.boot.actuate.audit.AuditEventRepository; SearchStrategy: all) did not find any beans of type org.springframework.boot.actuate.audit.AuditEventRepository" + }, + "org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.context.ShutdownEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint the configured access for endpoint 'shutdown' is NONE" + }, + "org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration#endpointCachingOperationInvokerAdvisor" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration#endpointOperationParameterMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration#propertiesEndpointAccessResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration#jackson2EndpointJsonMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration#endpointJsonMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#controllerEndpointDiscoverer" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#endpointMediaTypes" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#pathMappedEndpoints" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#webEndpointDiscoverer" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration#servletEndpointDiscoverer" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#buildInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnSingleCandidate (types: org.springframework.boot.info.BuildProperties; SearchStrategy: all) did not find any beans" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#envInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.env.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#gitInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnSingleCandidate (types: org.springframework.boot.info.GitProperties; SearchStrategy: all) did not find any beans" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#javaInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.java.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#osInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.os.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#processInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.process.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#sslInfo" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.ssl.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#sslInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.ssl.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.logging.LoggersEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint the configured access for endpoint 'heapdump' is NONE" + }, + "org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.sbom.SbomEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.startup.StartupEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$DifferentManagementContextConfiguration" : { + "outcome" : "notMatched", + "reason" : "Management Port actual port type (SAME) did not match required type (DIFFERENT)" + }, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.application.admin.enabled=true) did not find property 'spring.application.admin.enabled'" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$JdkDynamicAutoProxyConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.aop.proxy-target-class=false) did not find property 'spring.aop.proxy-target-class'" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingClass found unwanted class 'org.aspectj.weaver.Advice'" + }, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration#applicationAvailability" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration#defaultLifecycleProcessor" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "ResourceBundle did not find bundle with basename messages" + }, + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration#propertySourcesPlaceholderConfigurer" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration#buildProperties" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnResource did not find resource '${spring.info.build.location:classpath:META-INF/build-info.properties}'" + }, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration#gitProperties" : { + "outcome" : "notMatched", + "reason" : "GitResource did not find git info at classpath:git.properties" + }, + "org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" + }, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration#sslBundleRegistry" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerWrapperConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.scheduling.annotation.AsyncConfigurer; SearchStrategy: all) did not find any beans of type org.springframework.scheduling.annotation.AsyncConfigurer" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration#simpleAsyncTaskExecutorBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration#simpleAsyncTaskExecutorBuilderVirtualThreads" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder; SearchStrategy: all) found beans of type 'org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder' simpleAsyncTaskExecutorBuilder" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration#applicationTaskExecutor" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration#applicationTaskExecutorVirtualThreads" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnThreading did not find VIRTUAL" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorContextPropagationConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.context.ContextSnapshot'" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration#threadPoolTaskExecutorBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration#scheduledBeanLazyInitializationExcludeFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (names: org.springframework.scheduling.config.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.scheduling.config.internalScheduledAnnotationProcessor" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration#simpleAsyncTaskSchedulerBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration#simpleAsyncTaskSchedulerBuilderVirtualThreads" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder; SearchStrategy: all) found beans of type 'org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder' simpleAsyncTaskSchedulerBuilder" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (names: org.springframework.scheduling.config.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.scheduling.config.internalScheduledAnnotationProcessor" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration#threadPoolTaskSchedulerBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration#metricsRepositoryMethodInvocationListener" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration#repositoryTagsProvider" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration#pageableCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration#sortCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration#springDataWebSettings" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration#entityManagerFactoryBootstrapExecutorCustomizer" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.data.jpa.repositories.bootstrap-mode=deferred) did not find property 'spring.data.jpa.repositories.bootstrap-mode'" + }, + "org.springframework.boot.h2console.autoconfigure.H2ConsoleAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.h2.console.enabled=true) did not find property 'spring.h2.console.enabled'" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration#livenessStateHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration#readinessStateHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthEndpoint" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthEndpointGroupMembershipValidator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthEndpointGroups" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthHttpCodeStatusMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthStatusAggregator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointReactiveWebExtensionConfiguration" : { + "outcome" : "notMatched", + "reason" : "did not find reactive web application classes" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration#healthEndpointWebExtension" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration#livenessStateHealthIndicator" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.health.livenessstate.enabled=true) did not find property 'management.health.livenessstate.enabled'" + }, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration#readinessStateHealthIndicator" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.health.readinessstate.enabled=true) did not find property 'management.health.readinessstate.enabled'" + }, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration#diskSpaceHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration#sslHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration#sslInfo" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration#pingHealthContributor" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration#healthContributorRegistry" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration$ReactiveHealthContributorRegistryConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'reactor.core.publisher.Flux'" + }, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.hibernate.autoconfigure.metrics.HibernateMetricsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.hibernate.orm.micrometer.HibernateMetrics'" + }, + "org.springframework.boot.http.converter.autoconfigure.GsonHttpMessageConvertersConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'com.google.gson.Gson'" + }, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration#stringHttpMessageConvertersCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration" : { + "outcome" : "notMatched", + "reason" : "AnyNestedCondition 0 matched 2 did not; NestedCondition on Jackson2HttpMessageConvertersConfiguration.PreferJackson2OrJacksonUnavailableCondition.JacksonUnavailable @ConditionalOnMissingBean (types: org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConvertersCustomizer; SearchStrategy: all) found beans of type 'org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConvertersCustomizer' jacksonJsonHttpMessageConvertersCustomizer; NestedCondition on Jackson2HttpMessageConvertersConfiguration.PreferJackson2OrJacksonUnavailableCondition.Jackson2Preferred @ConditionalOnProperty (spring.http.converters.preferred-json-mapper=jackson2) did not find property 'spring.http.converters.preferred-json-mapper'" + }, + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration$MappingJackson2XmlHttpMessageConverterConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'com.fasterxml.jackson.dataformat.xml.XmlMapper'" + }, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration#jacksonJsonHttpMessageConvertersCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonXmlHttpMessageConverterConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'tools.jackson.dataformat.xml.XmlMapper'" + }, + "org.springframework.boot.http.converter.autoconfigure.JsonbHttpMessageConvertersConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'jakarta.json.bind.Jsonb'" + }, + "org.springframework.boot.http.converter.autoconfigure.KotlinSerializationHttpMessageConvertersConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required classes 'kotlinx.serialization.Serializable', 'kotlinx.serialization.json.Json'" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration#jacksonJsonMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration#jsonFactory" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration#jsonMapperBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$CborConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'tools.jackson.dataformat.cbor.CBORMapper'" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$XmlConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'tools.jackson.dataformat.xml.XmlMapper'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$EmbeddedDatabaseConfiguration" : { + "outcome" : "notMatched", + "reason" : "EmbeddedDataSource spring.datasource.url is set" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration#jdbcConnectionDetails" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceCheckpointRestoreConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.crac.Resource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Dbcp2" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.commons.dbcp2.BasicDataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Generic" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.datasource.type) did not find property 'spring.datasource.type'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$OracleUcp" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required classes 'oracle.ucp.jdbc.PoolDataSourceImpl', 'oracle.jdbc.OracleConnection'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Tomcat" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.tomcat.jdbc.pool.DataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceJmxConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$CommonsDbcp2PoolDataSourceMetadataProviderConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.commons.dbcp2.BasicDataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$OracleUcpPoolDataSourceMetadataProviderConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required classes 'oracle.ucp.jdbc.PoolDataSource', 'oracle.jdbc.OracleConnection'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$TomcatDataSourcePoolMetadataProviderConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.tomcat.jdbc.pool.DataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration#transactionManager" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: org.springframework.transaction.TransactionManager; SearchStrategy: all) found beans of type 'org.springframework.transaction.TransactionManager' transactionManager" + }, + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.JndiDataSourceAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.datasource.jndi-name) did not find property 'spring.datasource.jndi-name'" + }, + "org.springframework.boot.jdbc.autoconfigure.LazyConnectionDataSourceConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.datasource.connection-fetch=lazy) did not find property 'spring.datasource.connection-fetch'" + }, + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.XADataSourceAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.boot.jdbc.XADataSourceWrapper; SearchStrategy: all) did not find any beans of type org.springframework.boot.jdbc.XADataSourceWrapper" + }, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration#dbHealthContributor" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#entityManagerFactory" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#entityManagerFactoryBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#jpaVendorAdapter" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#transactionManager" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration#persistenceManagedTypes" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryConfiguration" : { + "outcome" : "notMatched", + "reason" : "NoneNestedConditions 1 matched 1 did not; NestedCondition on CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.SingleInjectableMeterRegistry @ConditionalOnSingleCandidate (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found a single bean 'simpleMeterRegistry'; NestedCondition on CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.NoMeterRegistryCondition @ConditionalOnMissingBean (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found beans of type 'io.micrometer.core.instrument.MeterRegistry' simpleMeterRegistry" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAspectsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.observations.annotations.enabled=true) did not find property 'management.observations.annotations.enabled'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration#micrometerClock" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.NoOpMeterRegistryConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found beans of type 'io.micrometer.core.instrument.MeterRegistry' simpleMeterRegistry" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.appoptics.AppOpticsMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.appoptics.AppOpticsMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.atlas.AtlasMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.atlas.AtlasMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.datadog.DatadogMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.datadog.DatadogMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.dynatrace.DynatraceMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.dynatrace.DynatraceMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.elastic.ElasticMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.elastic.ElasticMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.ganglia.GangliaMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.ganglia.GangliaMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.graphite.GraphiteMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.graphite.GraphiteMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.humio.HumioMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.humio.HumioMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.influx.InfluxMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.influx.InfluxMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.jmx.JmxMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.jmx.JmxMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.kairos.KairosMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.kairos.KairosMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.newrelic.NewRelicMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.newrelic.NewRelicMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.otlp.OtlpMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.registry.otlp.OtlpMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.prometheus.PrometheusMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.prometheusmetrics.PrometheusMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration#simpleConfig" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.stackdriver.StackdriverMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.stackdriver.StackdriverMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.statsd.StatsdMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.statsd.StatsdMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#classLoaderMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmCompilationMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmGcMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmHeapPressureMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmInfoMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmMemoryMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmThreadMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration$VirtualThreadMetricsConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.java21.instrument.binder.jdk.VirtualThreadMetrics'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.log4j2.Log4J2MetricsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.logging.log4j.core.LoggerContext'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration#logbackMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration#startupTimeMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#diskSpaceMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#fileDescriptorMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#processorMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#uptimeMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration#observationRegistry" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration#spelValueExpressionResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration$ObservedAspectConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.observations.annotations.enabled=true) did not find property 'management.observations.annotations.enabled'" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration#persistenceExceptionTranslationPostProcessor" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.ReactiveUserDetailsServiceAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "AnyNestedCondition 0 matched 2 did not; NestedCondition on ReactiveUserDetailsServiceAutoConfiguration.RSocketEnabledOrReactiveWebApplication.ReactiveWebApplicationCondition did not find reactive web application classes; NestedCondition on ReactiveUserDetailsServiceAutoConfiguration.RSocketEnabledOrReactiveWebApplication.RSocketSecurityEnabledCondition @ConditionalOnBean (types: org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler; SearchStrategy: all) did not find any beans of type org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler" + }, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration#authenticationEventPublisher" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration$SecurityDataConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.data.repository.query.SecurityEvaluationContextExtension'" + }, + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.reactive.ReactiveManagementWebSecurityAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnWebApplication did not find reactive web application classes" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.ManagementWebSecurityAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "AllNestedConditions 1 matched 1 did not; NestedCondition on DefaultWebSecurityCondition.Beans @ConditionalOnMissingBean (types: org.springframework.security.web.SecurityFilterChain; SearchStrategy: all) found beans of type 'org.springframework.security.web.SecurityFilterChain' demoChain; NestedCondition on DefaultWebSecurityCondition.Classes @ConditionalOnClass found required classes 'org.springframework.security.web.SecurityFilterChain', 'org.springframework.security.config.annotation.web.builders.HttpSecurity'" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$JerseyRequestMatcherConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.glassfish.jersey.server.ResourceConfig'" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration#requestMatcherProvider" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.rsocket.RSocketSecurityAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.springframework.boot.rsocket.server.RSocketServerCustomizer'" + }, + "org.springframework.boot.security.autoconfigure.web.reactive.ReactiveWebSecurityAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'reactor.core.publisher.Flux'" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration#securityFilterChainRegistration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration#pathPatternRequestMatcherBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$SecurityFilterChainConfiguration" : { + "outcome" : "notMatched", + "reason" : "AllNestedConditions 1 matched 1 did not; NestedCondition on DefaultWebSecurityCondition.Beans @ConditionalOnMissingBean (types: org.springframework.security.web.SecurityFilterChain; SearchStrategy: all) found beans of type 'org.springframework.security.web.SecurityFilterChain' demoChain; NestedCondition on DefaultWebSecurityCondition.Classes @ConditionalOnClass found required classes 'org.springframework.security.web.SecurityFilterChain', 'org.springframework.security.config.annotation.web.builders.HttpSecurity'" + }, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration#characterEncodingFilter" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration#multipartConfigElement" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration#multipartResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration$ApplicationContextFilterConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.server.add-application-context-header=true) did not find property 'management.server.add-application-context-header'" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.exchanges.ServletHttpExchangesAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository; SearchStrategy: all) did not find any beans of type org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.mappings.ServletMappingsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration#templateEngine" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$ReactiveTemplateEngineConfiguration" : { + "outcome" : "notMatched", + "reason" : "did not find reactive web application classes" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DataAttributeDialectConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'com.github.mxab.thymeleaf.extras.dataattribute.dialect.DataAttributeDialect'" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration#securityDialect" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebFluxConfiguration" : { + "outcome" : "notMatched", + "reason" : "did not find reactive web application classes" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebLayoutConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect'" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration#resourceUrlEncodingFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledResourceChain did not find class org.webjars.WebJarVersionLocator" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration#thymeleafViewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration#tomcatVirtualThreadsProtocolHandlerCustomizer" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnThreading did not find VIRTUAL" + }, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.actuate.web.server.TomcatReactiveManagementContextAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnWebApplication did not find reactive web application classes" + }, + "org.springframework.boot.tomcat.autoconfigure.actuate.web.server.TomcatServletManagementContextAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "Management Port actual port type (SAME) did not match required type (DIFFERENT)" + }, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration#tomcatMetricsBinder" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.reactive.TomcatReactiveWebServerAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnWebApplication did not find reactive web application classes" + }, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration#tomcatForwardedHeaderFilterCustomizer" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (server.forward-headers-strategy=framework) did not find property 'server.forward-headers-strategy'" + }, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration#tomcatServletWebServerFactory" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration#transactionalOperator" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnSingleCandidate (types: org.springframework.transaction.ReactiveTransactionManager; SearchStrategy: all) did not find any beans" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$AspectJTransactionManagementConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.transaction.aspectj.AbstractTransactionAspect; SearchStrategy: all) did not find any beans of type org.springframework.transaction.aspectj.AbstractTransactionAspect" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$JdkDynamicAutoProxyConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.aop.proxy-target-class=false) did not find property 'spring.aop.proxy-target-class'" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration#transactionTemplate" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration#platformTransactionManagerCustomizers" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.jta.autoconfigure.JndiJtaConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnJndi JNDI environment is not available" + }, + "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration#defaultValidator" : { + "outcome" : "matched" + }, + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration#methodValidationPostProcessor" : { + "outcome" : "matched" + }, + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration#forwardedHeaderFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (server.forward-headers-strategy=framework) did not find property 'server.forward-headers-strategy'" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration#multipartResolver" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.web.multipart.MultipartResolver; SearchStrategy: all) did not find any beans of type org.springframework.web.multipart.MultipartResolver" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration#dispatcherServletRegistration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration#formContentFilter" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration#hiddenHttpMethodFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.mvc.hiddenmethod.filter.enabled=true) did not find property 'spring.mvc.hiddenmethod.filter.enabled'" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration#flashMapManager" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration#localeResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration#viewNameTranslator" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$ProblemDetailsErrorHandlingConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.mvc.problemdetails.enabled=true) did not find property 'spring.mvc.problemdetails.enabled'" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$ResourceChainCustomizerConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledResourceChain did not find class org.webjars.WebJarVersionLocator" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#beanNameViewResolver" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: org.springframework.web.servlet.view.BeanNameViewResolver; SearchStrategy: all) found beans of type 'org.springframework.web.servlet.view.BeanNameViewResolver' beanNameViewResolver" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#defaultViewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#requestContextFilter" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#viewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration#webMvcObservationFilter" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#controllerEndpointHandlerMapping" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#endpointJackson2ObjectMapperWebMvcConfigurer" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#endpointJsonMapperWebMvcConfigurer" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#webEndpointServletHandlerMapping" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration#managementHealthEndpointWebMvcHandlerMapping" : { + "outcome" : "notMatched", + "reason" : "Management Port actual port type (SAME) did not match required type (DIFFERENT)" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.mappings.WebMvcMappingsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration#basicErrorController" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration#errorAttributes" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration#conventionErrorViewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration#beanNameViewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration#defaultErrorView" : { + "outcome" : "matched" + } + }, + "trendHistory" : [ { + "timestamp" : 1787595868889, + "totalStartupMs" : 6747, + "slowBeanCount" : 13, + "beanCount" : 429 + }, { + "timestamp" : 1787595880167, + "totalStartupMs" : 7100, + "slowBeanCount" : 15, + "beanCount" : 429 + }, { + "timestamp" : 1787595891310, + "totalStartupMs" : 7210, + "slowBeanCount" : 14, + "beanCount" : 429 + } ] +} \ No newline at end of file diff --git a/sample/v1.1.4/wiredoctor-diff.json b/sample/v1.1.4/wiredoctor-diff.json new file mode 100644 index 0000000..f391c34 --- /dev/null +++ b/sample/v1.1.4/wiredoctor-diff.json @@ -0,0 +1,23 @@ +{ + "addedBeansCount" : 0, + "addedBeans" : [ ], + "removedBeansCount" : 0, + "removedBeans" : [ ], + "addedEdgesCount" : 2, + "addedEdges" : [ "springSecurityFilterChain -> (inner bean)#394e0104", "springSecurityFilterChain -> (inner bean)#4e41b993" ], + "removedEdgesCount" : 2, + "removedEdges" : [ "springSecurityFilterChain -> (inner bean)#296ddfc7", "springSecurityFilterChain -> (inner bean)#915c47b" ], + "newCyclesCount" : 0, + "newCycles" : [ ], + "resolvedCyclesCount" : 0, + "resolvedCycles" : [ ], + "conditionDiff" : { + "available" : true, + "changedCount" : 0, + "changed" : [ ], + "addedCount" : 0, + "added" : [ ], + "removedCount" : 0, + "removed" : [ ] + } +} \ No newline at end of file diff --git a/sample/v1.1.4/wiredoctor-gate.status b/sample/v1.1.4/wiredoctor-gate.status new file mode 100644 index 0000000..1e7244a --- /dev/null +++ b/sample/v1.1.4/wiredoctor-gate.status @@ -0,0 +1,9 @@ +PASS +baseline=wiredoctor-baseline.json +profiles=default +newCycles=0 +resolvedCycles=0 +addedBeans=0 +removedBeans=0 +conditionsChanged=0 +gateArmed=false diff --git a/sample/v1.1.4/wiredoctor-ghost-report.json b/sample/v1.1.4/wiredoctor-ghost-report.json new file mode 100644 index 0000000..1fb6f54 --- /dev/null +++ b/sample/v1.1.4/wiredoctor-ghost-report.json @@ -0,0 +1,17 @@ +{ + "disclaimer" : "'untouched' means no proxied method was invoked during THIS run — NOT that the bean is unused. Confidence scales with run duration and traffic realism. Framework beans are out of scope; untrackable beans could not be wrapped (reason given).", + "trackedCount" : 17, + "touchedCount" : 10, + "untouchedCount" : 7, + "untouched" : [ "archivedReportExporter", "catalogCacheWarmer", "defaultTemplateResolver", "legacyExportService", "legacyImportService", "securityDialect", "templateEngine" ], + "touched" : [ "auditService", "dataSource", "inventoryService", "jacksonJsonMapper", "jsonFactory", "notificationService", "orderController", "orderService", "pricingService", "thymeleafViewResolver" ], + "untrackableCount" : 5, + "untrackable" : { + "asyncMailer" : "already-proxied", + "entityManagerFactory" : "final-class", + "jpaSharedEM_entityManagerFactory" : "final-class", + "jsonMapperBuilder" : "non-singleton", + "orderRepository" : "already-proxied" + }, + "frameworkSkipped" : 391 +} \ No newline at end of file diff --git a/wiredoctor-autoconfigure/wiredoctor-report.html b/sample/v1.1.4/wiredoctor-report.html similarity index 77% rename from wiredoctor-autoconfigure/wiredoctor-report.html rename to sample/v1.1.4/wiredoctor-report.html index 4c3f005..8aa6aa9 100644 --- a/wiredoctor-autoconfigure/wiredoctor-report.html +++ b/sample/v1.1.4/wiredoctor-report.html @@ -217,6 +217,7 @@ .kpi.danger .k-value { color: var(--danger); } .kpi.warn .k-value { color: var(--warn); } .kpi.ghost .k-value { color: var(--ghost); } +.kpi .k-note { font-size: 10.5px; color: var(--text-dim); margin-top: 5px; line-height: 1.35; } .two-col { grid-template-columns: 1fr 1fr; align-items: start; } @media (max-width: 1000px) { .two-col { grid-template-columns: 1fr; } } @@ -270,6 +271,22 @@ table.data tbody tr td:first-child { box-shadow: inset 2px 0 0 transparent; } table.data tbody tr:hover td:first-child { box-shadow: inset 2px 0 0 var(--accent); } +/* v1.1.3 — drill-down. Collapsed by default: the summary keeps the number the + cell showed before, the detail is one click away for whoever wants it. */ +.drill > summary { + cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 5px; +} +.drill > summary::-webkit-details-marker { display: none; } +.drill > summary::after { content: '▸'; font-size: 9px; color: var(--text-dim); } +.drill[open] > summary::after { content: '▾'; } +.drill > summary:hover::after { color: var(--accent); } +.drill > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 3px; } +.drill-body { + margin-top: 7px; padding-left: 10px; border-left: 2px solid var(--border-hi); + font-family: var(--mono); font-size: 11.5px; color: var(--text-2); line-height: 1.7; + word-break: break-all; +} + /* ═══════════ Charts (dark-validated: ordinal ramp + categorical slots) ═══════════ */ .chart { display: block; width: 100%; height: auto; } .chart .grid-line { stroke: var(--border); stroke-width: 1; } @@ -281,6 +298,15 @@ .chart .col { transition: opacity .12s; cursor: default; } .chart .col:hover { opacity: 0.75; } .chart-note { font-size: 11px; color: var(--text-dim); margin: 10px 0 0; } +.sc-dot { stroke: var(--surface); stroke-width: 0.6; } +.sc-dot.user { fill: var(--accent); } +.sc-dot.fw { fill: var(--text-dim); opacity: 0.4; } +.sc-dot.one { cursor: pointer; } +.sc-dot.one:hover { stroke: var(--text); stroke-width: 1.4; } +.sc-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; + color: var(--text-2); cursor: pointer; user-select: none; } +.sc-toggle input { accent-color: var(--accent); } +.sc-q { font-size: 9.5px; fill: var(--text-dim); } .stack { display: flex; gap: 2px; height: 22px; border-radius: 4px; overflow: hidden; } .stack > span { min-width: 3px; } .stack-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 12px; font-size: 12px; } @@ -364,6 +390,22 @@ } .cp-node b { color: var(--warn); font-weight: 600; } .cp-arrow { color: var(--text-dim); font-size: 12px; } +/* v1.1.3 — cycle chain: same chip as the critical path, but clickable and red */ +.cy-node { + font-family: var(--mono); font-size: 11.5px; padding: 4px 9px; border-radius: 5px; + background: var(--danger-dim); color: var(--danger); + border: 1px solid rgba(229,83,75,0.35); cursor: pointer; +} +.cy-node:hover { background: var(--danger); color: #fff; } +.cy-node:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } +.cy-fix { + margin-top: 16px; padding: 12px 14px; border-radius: 6px; + background: var(--surface-2); border-left: 3px solid var(--ok); +} +.cy-fix-h { font-size: 10.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ok); margin-bottom: 8px; } +.cy-fix.blocked { border-left-color: var(--warn); } +.cy-fix.blocked .cy-fix-h { color: var(--warn); } +.cy-lazy { color: var(--accent); } ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-thumb { background: var(--surface-3); border-radius: 5px; border: 2px solid var(--bg); } @@ -377,7 +419,7 @@
profile: default @@ -398,516 +440,1448 @@ "activeProfiles" : [ ], "threadDistribution" : { "perThread" : { - "main" : [ "org.springframework.context.annotation.internalCommonAnnotationProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration", "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter", "forceAutoProxyCreatorToUseClassProxying", "spring.http.reactiveclient-org.springframework.boot.autoconfigure.http.client.reactive.HttpReactiveClientProperties", "org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration", "simpleAsyncTaskSchedulerBuilder", "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties", "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$DefaultCodecsConfiguration", "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration", "org.springframework.context.annotation.internalConfigurationAnnotationProcessor", "nettyAutoConfigurationLazyInitializationExcludeFilter", "bootstrapExecutor", "propertySourcesPlaceholderConfigurer", "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration", "parameterNamesModule", "reactorResourceFactoryClientHttpConnectorBuilderCustomizer", "spring.http.codecs-org.springframework.boot.autoconfigure.http.codec.HttpCodecsProperties", "org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration", "reactorResourceFactory", "stringHttpMessageConverter", "defaultCodecCustomizer", "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration", "messageConverters", "jsonComponentModule", "org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration", "org.springframework.context.event.internalEventListenerFactory", "mappingJackson2HttpMessageConverter", "applicationTaskExecutorAsyncConfigurer", "spring.reactor.netty-org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyProperties", "restClientBuilderConfigurer", "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration", "applicationAvailability", "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration", "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties", "clientHttpConnectorSettings", "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration", "org.springframework.boot.context.internalConfigurationPropertiesBinder", "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor", "org.springframework.boot.autoconfigure.AutoConfigurationPackages", "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration", "spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties", "reactorAutoConfigurationLazyInitializationExcludeFilter", "reactorNettyHttpClientMapperClientHttpConnectorBuilderCustomizer", "org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration", "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration", "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration", "standardJacksonObjectMapperBuilderCustomizer", "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor", "threadPoolTaskExecutorBuilder", "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration", "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration", "wireDoctorAnalyzerIntegrationTest.TestApp", "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration$ReactorNetty", "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration", "bootstrapExecutorAliasPostProcessor", "clientHttpConnectorBuilder", "webClientSsl", "jacksonCodecCustomizer", "org.springframework.context.event.internalEventListenerProcessor", "spring.netty-org.springframework.boot.autoconfigure.netty.NettyProperties", "jsonMixinModuleEntries", "spring.codec-org.springframework.boot.autoconfigure.codec.CodecProperties", "org.springframework.boot.context.properties.BoundConfigurationProperties", "jacksonObjectMapperBuilder", "restClientSsl", "threadPoolTaskSchedulerBuilder", "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties", "spring.http.client-org.springframework.boot.autoconfigure.http.client.HttpClientProperties", "spring.reactor-org.springframework.boot.autoconfigure.reactor.ReactorProperties", "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration", "exchangeStrategiesCustomizer", "lifecycleProcessor", "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration", "org.springframework.aop.config.internalAutoProxyCreator", "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration", "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration", "wiredoctor-com.wiredoctor.WireDoctorProperties", "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration$ReactorNetty", "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration", "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration", "com.wiredoctor.WireDoctorAutoConfiguration", "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration", "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations$ReactorResourceFactoryConfiguration", "spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties", "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration", "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties", "org.springframework.context.annotation.internalAutowiredAnnotationProcessor", "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration", "simpleAsyncTaskExecutorBuilder", "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration", "jsonMixinModule", "clientHttpRequestFactoryBuilder", "sslBundleRegistry", "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration", "wireDoctorAnalyzer", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration", "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration", "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration", "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory", "fileWatcher", "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration", "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration", "jacksonObjectMapper", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration", "httpMessageConvertersRestClientCustomizer", "clientHttpRequestFactorySettings", "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration", "sslPropertiesSslBundleRegistrar" ] + "main" : [ "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration", "wireDoctorGhostTrackingPostProcessor", "healthEndpointGroups", "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties", "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration", "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration", "hikariDataSourceMeterBinder", "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties", "jdbcTemplate", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", "webEndpointPathMapper", "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "org.springframework.context.annotation.internalConfigurationAnnotationProcessor", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration", "&entityManagerFactory", "openEntityManagerInViewInterceptor", "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration", "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration", "beanNameViewResolver", "pathPatternRequestMatcherBuilder", "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration", "viewResolver", "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration", "projectingArgumentResolverBeanPostProcessor", "tomcatServletWebServerFactoryCustomizer", "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties", "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration", "pricingService", "dataSourceScriptDatabaseInitializer", "applicationTaskExecutorAsyncConfigurer", "meterRegistryPostProcessor", "endpointMediaTypes", "jvmCompilationMetrics", "jacksonMixinModuleEntries", "orderController", "jdbcConnectionDetailsHikariBeanPostProcessor", "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration", "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties", "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration", "repositoryTagsProvider", "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties", "org.springframework.scheduling.annotation.ProxyAsyncConfiguration", "org.springframework.boot.context.internalConfigurationPropertiesBinder", "dataSourcePoolMetadataMeterBinder", "dbHealthContributor", "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration", "jpa.OrderRepository.fragments#0", "catalogCacheWarmer", "webServerFactoryCustomizerBeanPostProcessor", "controllerEndpointHandlerMapping", "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration", "jdbcClient", "observabilitySchedulingConfigurer", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration", "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration", "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration", "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties", "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "org.springframework.boot.persistence.autoconfigure.EntityScanPackages", "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties", "conventionErrorViewResolver", "wireDoctorGhostTracker", "org.springframework.context.event.internalEventListenerProcessor", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", "formContentFilter", "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration", "defaultViewResolver", "routerFunctionMapping", "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration", "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties", "multipartResolver", "healthEndpointWebExtension", "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration", "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration", "conversionServicePostProcessor", "webExposeExcludePropertyEndpointFilter", "requestMappingHandlerMapping", "lifecycleProcessor", "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "org.springframework.aop.config.internalAutoProxyCreator", "requestMappingHandlerAdapter", "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration", "tomcatMetricsBinder", "wiredoctor-com.wiredoctor.WireDoctorProperties", "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration", "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension", "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration", "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration", "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties", "sslMeterBinder", "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration", "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties", "org.springframework.context.annotation.internalAutowiredAnnotationProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration", "orderService", "metricsRepositoryMethodInvocationListenerBeanPostProcessor", "classLoaderMetrics", "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration", "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration", "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration", "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration", "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory", "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration", "springDataWebSettings", "fileWatcher", "sortResolver", "stringHttpMessageConvertersCustomizer", "springSecurityPathPatternParserBeanDefinitionRegistryPostProcessor", "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration", "standardJsonMapperBuilderCustomizer", "thymeleafViewResolver", "errorAttributes", "beanNameHandlerMapping", "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration", "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration", "delegatingApplicationListener", "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration", "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter", "org.springframework.data.web.config.SpringDataJacksonConfiguration", "bootstrapExecutor", "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration", "flashMapManager", "orderRepository", "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration", "jackson2EndpointJsonMapper", "requestMatcherProvider", "legacyExportService", "healthHttpCodeStatusMapper", "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration", "metricsRepositoryMethodInvocationListener", "uptimeMetrics", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration", "controllerExposeExcludePropertyEndpointFilter", "jvmThreadMetrics", "pathMappedEndpoints", "auditService", "standardJsonFactoryBuilderCustomizer", "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar", "jsonFactory", "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration", "managementServletContext", "fileDescriptorMetrics", "livenessStateHealthIndicator", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration", "org.springframework.transaction.config.internalTransactionalEventListenerFactory", "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration", "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration", "mvcValidator", "applicationAvailability", "defaultTemplateResolver", "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration", "mvcResourceUrlProvider", "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties", "sslInfo", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration", "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties", "servletEndpointRegistrar", "archivedReportExporter", "org.springframework.boot.autoconfigure.AutoConfigurationPackages", "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties", "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties", "jackson3pageModule", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties", "hikariPoolDataSourceMetadataProvider", "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration", "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration", "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration", "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration", "org.springframework.data.web.config.SpringDataWebConfiguration", "legacyImportService", "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration", "propertiesEndpointAccessResolver", "errorPageRegistrarBeanPostProcessor", "mvcConversionService", "endpointJackson2ObjectMapperWebMvcConfigurer", "initializeAuthenticationProviderBeanManagerConfigurer", "org.springframework.context.annotation.internalPersistenceAnnotationProcessor", "controllerEndpointDiscoverer", "org.springframework.boot.context.properties.BoundConfigurationProperties", "diskSpaceHealthIndicator", "jvmMemoryMetrics", "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration", "mvcPathMatcher", "handlerExceptionResolver", "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration", "basicErrorController", "pingHealthContributor", "sslHealthIndicator", "healthEndpointGroupMembershipValidator", "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration", "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration", "groupsHealthContributorNameValidator", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration", "namedParameterJdbcTemplate", "simpleAsyncTaskExecutorBuilder", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties", "spelValueExpressionResolver", "org.springframework.scheduling.config.internalAsyncAnnotationProcessor", "mvcViewResolver", "simpleConfig", "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration", "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration", "requestDataValueProcessor", "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration", "observationRegistry", "mvcUriComponentsContributor", "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties", "webAccessPropertiesOperationFilter", "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration", "readinessStateHealthIndicator", "objectPostProcessor", "jpaSharedEM_entityManagerFactory", "wiredoctorDemoApplication", "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration", "templateEngine", "jackson3GeoModule", "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration", "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties", "platformTransactionManagerCustomizers", "securityFilterChainRegistration", "data-jpa.repository-aot-processor#0", "endpointCachingOperationInvokerAdvisor", "defaultServletHandlerMapping", "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration", "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties", "persistenceExceptionTranslationPostProcessor", "characterEncodingFilter", "observationRegistryPostProcessor", "sortCustomizer", "webEndpointDiscoverer", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration", "org.springframework.security.config.annotation.web.configuration.ObservationConfiguration", "preserveErrorControllerTargetClassPostProcessor", "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration", "logbackMetrics", "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration", "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties", "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration", "propertySourcesPlaceholderConfigurer", "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration", "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration", "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties", "methodValidationPostProcessor", "wireDoctorGhostReportWriter", "jsonComponentModule", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "entityManagerFactoryBuilder", "org.springframework.context.event.internalEventListenerFactory", "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration", "webSocketWebServerCustomizer", "clientConvertersCustomizer", "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties", "springSecurityFilterChain", "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration", "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties", "healthStatusAggregator", "endpointJsonMapper", "enableGlobalAuthenticationAutowiredConfigurer", "transactionTemplate", "mvcUrlPathHelper", "jsonMapperBuilder", "servletWebServerFactoryCustomizer", "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration", "inMemoryUserDetailsManager", "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration", "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration", "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration", "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration", "jpa.named-queries#0", "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration", "filterChainDecoratorPostProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration", "metricsObservationHandlerGroup", "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration", "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties", "transactionInterceptor", "simpleMeterRegistry", "authenticationEventPublisher", "bootstrapExecutorAliasPostProcessor", "startupTimeMetrics", "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties", "multipartConfigElement", "requestContextFilter", "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration", "pageableResolver", "availabilityProbesHealthEndpointGroupsPostProcessor", "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration", "handlerFunctionAdapter", "localeResolver", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration", "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration", "jvmHeapPressureMetrics", "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration", "welcomePageNotAcceptableHandlerMapping", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration", "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration", "endpointOperationParameterMapper", "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration", "spring.transaction-org.springframework.boot.transaction.autoconfigure.TransactionProperties", "jpaVendorAdapter", "sslBundleRegistry", "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration", "wireDoctorAnalyzer", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration", "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration", "jacksonGeoModule", "meterRegistryCloser", "mvcContentNegotiationManager", "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration", "httpRequestHandlerAdapter", "asyncMailer", "org.springframework.aop.framework.autoproxy.defaultProxyConfig", "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration", "sslPropertiesSslBundleRegistrar", "org.springframework.context.annotation.internalCommonAnnotationProcessor", "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration", "defaultMeterObservationHandler", "notificationService", "simpleControllerHandlerAdapter", "resourceHandlerMapping", "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration", "simpleAsyncTaskSchedulerBuilder", "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties", "healthContributorRegistry", "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties", "org.springframework.transaction.config.internalTransactionAdvisor", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration", "eagerJpaMetamodelCacheCleanup", "propertiesObservationFilter", "persistenceManagedTypes", "micrometerClock", "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari", "propertiesMeterFilter", "problemDetailJsonMapperBuilderCustomizer", "demoSecurityConfig", "jacksonJsonMapper", "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration", "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration", "endpointJsonMapperWebMvcConfigurer", "diskSpaceMetrics", "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup", "servletEndpointDiscoverer", "metricsHttpServerUriTagFilter", "eagerTaskExecutorMetrics", "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration", "privilegeEvaluator", "jacksonMixinModule", "healthEndpoint", "viewControllerHandlerMapping", "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties", "mvcPatternParser", "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor", "dispatcherServlet", "jvmInfoMetrics", "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties", "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration", "demoChain", "webEndpointServletHandlerMapping", "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor", "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration", "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration", "threadPoolTaskExecutorBuilder", "processorMetrics", "inventoryService", "transactionAttributeSource", "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration", "transactionExecutionListeners", "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration", "serverConvertersCustomizer", "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration", "transactionManager", "org.springframework.data.web.config.SpringDataJackson3Configuration", "errorPageCustomizer", "openEntityManagerInViewInterceptorConfigurer", "tomcatWebServerFactoryCustomizer", "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration", "authenticationManagerPostProcessor", "threadPoolTaskSchedulerBuilder", "viewNameTranslator", "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration", "server-org.springframework.boot.web.server.autoconfigure.ServerProperties", "pageableCustomizer", "dispatcherServletRegistration", "dataSource", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "healthEndpointGroupsBeanPostProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration", "com.wiredoctor.WireDoctorAutoConfiguration", "jpaMappingContext", "tomcatServletWebServerFactory", "mvcApiVersionStrategy", "error", "webAuthorizationManagerPostProcessor", "jdbcConnectionDetails", "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration", "jvmGcMetrics", "offsetResolver", "initializeUserDetailsBeanManagerConfigurer", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties", "jacksonJsonHttpMessageConvertersCustomizer", "healthEndpointWebMvcHandlerMapping", "defaultValidator", "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration", "welcomePageHandlerMapping", "servletExposeExcludePropertyEndpointFilter", "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration", "authenticationManagerBuilder", "webMvcObservationFilter", "securityDialect", "pageModule", "webSecurityExpressionHandler" ] }, "counts" : { - "main" : 114 + "main" : 428 } }, "startupSlowestSteps" : [ { "name" : "spring.context.refresh", - "durationMs" : 88, + "durationMs" : 6321, "tags" : { } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 2205, + "tags" : { + "threadName" : "main", + "beanName" : "&entityManagerFactory", + "beanType" : "interface org.springframework.context.weaving.LoadTimeWeaverAware" + } }, { "name" : "spring.context.beans.post-process", - "durationMs" : 53, + "durationMs" : 1830, "tags" : { } }, { "name" : "spring.context.beandef-registry.post-process", - "durationMs" : 49, + "durationMs" : 1457, "tags" : { - "postProcessor" : "org.springframework.context.annotation.ConfigurationClassPostProcessor@1be66706" + "postProcessor" : "org.springframework.context.annotation.ConfigurationClassPostProcessor@47404bea" } }, { "name" : "spring.context.config-classes.parse", - "durationMs" : 48, + "durationMs" : 1432, "tags" : { - "classCount" : "50" + "classCount" : "164" } }, { - "name" : "spring.beans.instantiate", - "durationMs" : 11, + "name" : "spring.boot.webserver.create", + "durationMs" : 552, "tags" : { - "threadName" : "main", - "beanName" : "standardJacksonObjectMapperBuilderCustomizer" + "factory" : "class org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 8, + "durationMs" : 387, "tags" : { "threadName" : "main", - "beanName" : "jsonMixinModule" + "beanName" : "demoChain" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 8, + "durationMs" : 341, "tags" : { "threadName" : "main", - "beanName" : "jsonMixinModuleEntries" + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", + "beanType" : "class org.springframework.security.config.annotation.web.builders.HttpSecurity" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 2, + "durationMs" : 279, "tags" : { "threadName" : "main", - "beanName" : "bootstrapExecutor", - "beanType" : "interface java.util.concurrent.Executor" + "beanName" : "catalogCacheWarmer" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 1, + "durationMs" : 207, "tags" : { "threadName" : "main", - "beanName" : "threadPoolTaskExecutorBuilder" + "beanName" : "orderController" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 1, + "durationMs" : 198, "tags" : { "threadName" : "main", - "beanName" : "messageConverters" + "beanName" : "orderService", + "beanType" : "class com.example.demo.order.OrderService" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 1, + "durationMs" : 193, "tags" : { "threadName" : "main", - "beanName" : "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 1, + "durationMs" : 189, "tags" : { "threadName" : "main", - "beanName" : "wireDoctorAnalyzer" + "beanName" : "orderRepository", + "beanType" : "interface com.example.demo.domain.OrderRepository" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 1, + "durationMs" : 176, "tags" : { "threadName" : "main", - "beanName" : "jacksonObjectMapper" + "beanName" : "tomcatServletWebServerFactory", + "beanType" : "interface org.springframework.boot.web.server.servlet.ServletWebServerFactory" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 1, + "durationMs" : 173, "tags" : { "threadName" : "main", - "beanName" : "wiredoctor-com.wiredoctor.WireDoctorProperties" - } - }, { - "name" : "spring.beans.smart-initialize", - "durationMs" : 0, - "tags" : { - "beanName" : "org.springframework.context.event.internalEventListenerProcessor" + "beanName" : "mvcContentNegotiationManager", + "beanType" : "interface org.springframework.web.accept.ContentNegotiationStrategy" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 0, + "durationMs" : 148, "tags" : { "threadName" : "main", - "beanName" : "defaultCodecCustomizer" + "beanName" : "requestMappingHandlerAdapter" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 0, + "durationMs" : 123, "tags" : { "threadName" : "main", - "beanName" : "jsonComponentModule" + "beanName" : "jacksonJsonHttpMessageConvertersCustomizer", + "beanType" : "interface org.springframework.boot.http.converter.autoconfigure.ServerHttpMessageConvertersCustomizer" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 0, + "durationMs" : 122, "tags" : { "threadName" : "main", - "beanName" : "org.springframework.aop.config.internalAutoProxyCreator", - "beanType" : "interface org.springframework.beans.factory.config.BeanPostProcessor" + "beanName" : "jacksonJsonMapper", + "beanType" : "class tools.jackson.databind.json.JsonMapper" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 0, + "durationMs" : 114, "tags" : { "threadName" : "main", - "beanName" : "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" + "beanName" : "webMvcObservationFilter", + "beanType" : "interface org.springframework.boot.web.servlet.ServletContextInitializer" } }, { "name" : "spring.beans.instantiate", - "durationMs" : 0, + "durationMs" : 99, "tags" : { "threadName" : "main", - "beanName" : "org.springframework.context.annotation.internalConfigurationAnnotationProcessor", - "beanType" : "interface org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor" + "beanName" : "dataSourceScriptDatabaseInitializer" } } ], - "slowBeans" : [ ], + "slowBeans" : [ { + "beanName" : "&entityManagerFactory", + "durationMs" : 2205 + }, { + "beanName" : "demoChain", + "durationMs" : 387 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", + "durationMs" : 341 + }, { + "beanName" : "catalogCacheWarmer", + "durationMs" : 279 + }, { + "beanName" : "orderController", + "durationMs" : 207 + }, { + "beanName" : "orderService", + "durationMs" : 198 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration", + "durationMs" : 193 + }, { + "beanName" : "orderRepository", + "durationMs" : 189 + }, { + "beanName" : "tomcatServletWebServerFactory", + "durationMs" : 176 + }, { + "beanName" : "mvcContentNegotiationManager", + "durationMs" : 173 + }, { + "beanName" : "requestMappingHandlerAdapter", + "durationMs" : 148 + }, { + "beanName" : "jacksonJsonHttpMessageConvertersCustomizer", + "durationMs" : 123 + }, { + "beanName" : "jacksonJsonMapper", + "durationMs" : 122 + }, { + "beanName" : "webMvcObservationFilter", + "durationMs" : 114 + } ], "beanTimings" : { - "org.springframework.context.annotation.internalCommonAnnotationProcessor" : 0, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : 0, - "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter" : 0, - "forceAutoProxyCreatorToUseClassProxying" : 0, - "spring.http.reactiveclient-org.springframework.boot.autoconfigure.http.client.reactive.HttpReactiveClientProperties" : 0, - "org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration" : 0, - "simpleAsyncTaskSchedulerBuilder" : 0, - "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : 0, - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$DefaultCodecsConfiguration" : 0, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration" : 0, - "org.springframework.context.annotation.internalConfigurationAnnotationProcessor" : 0, - "nettyAutoConfigurationLazyInitializationExcludeFilter" : 0, - "bootstrapExecutor" : 2, - "propertySourcesPlaceholderConfigurer" : 0, - "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration" : 0, - "parameterNamesModule" : 0, - "reactorResourceFactoryClientHttpConnectorBuilderCustomizer" : 0, - "spring.http.codecs-org.springframework.boot.autoconfigure.http.codec.HttpCodecsProperties" : 0, - "org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration" : 0, - "reactorResourceFactory" : 0, - "stringHttpMessageConverter" : 0, - "defaultCodecCustomizer" : 0, - "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration" : 0, - "messageConverters" : 1, - "jsonComponentModule" : 0, - "org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration" : 0, - "org.springframework.context.event.internalEventListenerFactory" : 0, - "mappingJackson2HttpMessageConverter" : 0, - "applicationTaskExecutorAsyncConfigurer" : 0, - "spring.reactor.netty-org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyProperties" : 0, - "restClientBuilderConfigurer" : 0, - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration" : 0, - "applicationAvailability" : 0, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration" : 0, - "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : 1, - "clientHttpConnectorSettings" : 0, - "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : 0, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : 0, - "org.springframework.boot.context.internalConfigurationPropertiesBinder" : 0, - "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor" : 0, - "org.springframework.boot.autoconfigure.AutoConfigurationPackages" : 0, - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : 0, - "spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties" : 0, - "reactorAutoConfigurationLazyInitializationExcludeFilter" : 0, - "reactorNettyHttpClientMapperClientHttpConnectorBuilderCustomizer" : 0, - "org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration" : 0, - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : 0, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration" : 0, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : 0, + "wireDoctorGhostTrackingPostProcessor" : 5, + "healthEndpointGroups" : 17, + "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : 0, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : 0, + "hikariDataSourceMeterBinder" : 0, + "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" : 0, + "jdbcTemplate" : 9, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : 0, + "webEndpointPathMapper" : 3, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : 1, + "org.springframework.context.annotation.internalConfigurationAnnotationProcessor" : 42, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : 0, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : 0, + "&entityManagerFactory" : 2205, + "openEntityManagerInViewInterceptor" : 2, + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : 0, + "beanNameViewResolver" : 0, + "pathPatternRequestMatcherBuilder" : 0, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : 2, + "viewResolver" : 78, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : 0, + "projectingArgumentResolverBeanPostProcessor" : 20, + "tomcatServletWebServerFactoryCustomizer" : 1, + "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" : 1, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : 0, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : 2, + "pricingService" : 5, + "dataSourceScriptDatabaseInitializer" : 99, + "applicationTaskExecutorAsyncConfigurer" : 1, + "meterRegistryPostProcessor" : 45, + "endpointMediaTypes" : 1, + "jvmCompilationMetrics" : 0, + "jacksonMixinModuleEntries" : 3, + "orderController" : 207, + "jdbcConnectionDetailsHikariBeanPostProcessor" : 4, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : 0, + "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : 1, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration" : 0, + "repositoryTagsProvider" : 1, + "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" : 0, + "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" : 9, + "org.springframework.boot.context.internalConfigurationPropertiesBinder" : 1, + "dataSourcePoolMetadataMeterBinder" : 0, + "dbHealthContributor" : 10, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration" : 0, + "jpa.OrderRepository.fragments#0" : 3, + "catalogCacheWarmer" : 279, + "webServerFactoryCustomizerBeanPostProcessor" : 0, + "controllerEndpointHandlerMapping" : 6, "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : 0, - "standardJacksonObjectMapperBuilderCustomizer" : 11, - "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor" : 0, - "threadPoolTaskExecutorBuilder" : 1, - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : 0, - "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : 0, + "jdbcClient" : 1, + "observabilitySchedulingConfigurer" : 1, "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : 0, - "wireDoctorAnalyzerIntegrationTest.TestApp" : 0, - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration$ReactorNetty" : 0, - "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : 0, - "bootstrapExecutorAliasPostProcessor" : 0, - "clientHttpConnectorBuilder" : 0, - "webClientSsl" : 0, - "jacksonCodecCustomizer" : 0, - "org.springframework.context.event.internalEventListenerProcessor" : 0, - "spring.netty-org.springframework.boot.autoconfigure.netty.NettyProperties" : 0, - "jsonMixinModuleEntries" : 8, - "spring.codec-org.springframework.boot.autoconfigure.codec.CodecProperties" : 0, - "org.springframework.boot.context.properties.BoundConfigurationProperties" : 0, - "jacksonObjectMapperBuilder" : 0, - "restClientSsl" : 0, - "threadPoolTaskSchedulerBuilder" : 0, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : 0, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : 0, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration" : 0, + "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" : 0, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : 0, + "org.springframework.boot.persistence.autoconfigure.EntityScanPackages" : 0, + "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" : 2, + "conventionErrorViewResolver" : 1, + "wireDoctorGhostTracker" : 1, + "org.springframework.context.event.internalEventListenerProcessor" : 1, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" : 4, + "formContentFilter" : 3, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : 0, + "defaultViewResolver" : 5, + "routerFunctionMapping" : 6, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" : 341, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : 0, "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" : 0, - "spring.http.client-org.springframework.boot.autoconfigure.http.client.HttpClientProperties" : 0, - "spring.reactor-org.springframework.boot.autoconfigure.reactor.ReactorProperties" : 0, - "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration" : 0, - "exchangeStrategiesCustomizer" : 0, - "lifecycleProcessor" : 0, - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration" : 0, - "org.springframework.aop.config.internalAutoProxyCreator" : 0, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration" : 0, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration" : 0, - "wiredoctor-com.wiredoctor.WireDoctorProperties" : 1, - "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration$ReactorNetty" : 0, - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration" : 0, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : 0, + "multipartResolver" : 2, + "healthEndpointWebExtension" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : 0, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : 0, + "conversionServicePostProcessor" : 6, + "webExposeExcludePropertyEndpointFilter" : 0, + "requestMappingHandlerMapping" : 63, + "lifecycleProcessor" : 2, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" : 0, + "org.springframework.aop.config.internalAutoProxyCreator" : 17, + "requestMappingHandlerAdapter" : 148, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : 0, + "tomcatMetricsBinder" : 0, + "wiredoctor-com.wiredoctor.WireDoctorProperties" : 5, + "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" : 21, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" : 0, + "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension" : 1, "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : 0, - "com.wiredoctor.WireDoctorAutoConfiguration" : 0, - "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration" : 0, - "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations$ReactorResourceFactoryConfiguration" : 0, - "spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties" : 0, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration" : 0, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : 0, + "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" : 1, + "sslMeterBinder" : 2, + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : 0, "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" : 0, - "org.springframework.context.annotation.internalAutowiredAnnotationProcessor" : 0, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration" : 0, + "org.springframework.context.annotation.internalAutowiredAnnotationProcessor" : 1, "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration" : 0, - "simpleAsyncTaskExecutorBuilder" : 0, - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration" : 0, - "jsonMixinModule" : 8, - "clientHttpRequestFactoryBuilder" : 0, - "sslBundleRegistry" : 0, - "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration" : 0, - "wireDoctorAnalyzer" : 1, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : 0, + "orderService" : 198, + "metricsRepositoryMethodInvocationListenerBeanPostProcessor" : 1, + "classLoaderMetrics" : 1, "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" : 0, - "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : 0, - "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : 0, - "fileWatcher" : 0, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration" : 0, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" : 193, + "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" : 1, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : 6, + "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : 3, + "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration" : 0, + "springDataWebSettings" : 2, + "fileWatcher" : 1, + "sortResolver" : 4, + "stringHttpMessageConvertersCustomizer" : 2, + "springSecurityPathPatternParserBeanDefinitionRegistryPostProcessor" : 1, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : 4, + "standardJsonMapperBuilderCustomizer" : 26, + "thymeleafViewResolver" : 75, + "errorAttributes" : 1, + "beanNameHandlerMapping" : 6, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : 1, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : 0, + "delegatingApplicationListener" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" : 1, + "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter" : 3, + "org.springframework.data.web.config.SpringDataJacksonConfiguration" : 0, + "bootstrapExecutor" : 17, + "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration" : 10, + "flashMapManager" : 2, + "orderRepository" : 189, + "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration" : 0, + "jackson2EndpointJsonMapper" : 3, + "requestMatcherProvider" : 1, + "legacyExportService" : 21, + "healthHttpCodeStatusMapper" : 2, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : 0, + "metricsRepositoryMethodInvocationListener" : 7, + "uptimeMetrics" : 0, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" : 5, + "controllerExposeExcludePropertyEndpointFilter" : 0, + "jvmThreadMetrics" : 1, + "pathMappedEndpoints" : 64, + "auditService" : 4, + "standardJsonFactoryBuilderCustomizer" : 6, + "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar" : 0, + "jsonFactory" : 39, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : 0, + "managementServletContext" : 0, + "fileDescriptorMetrics" : 0, + "livenessStateHealthIndicator" : 4, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" : 0, + "org.springframework.transaction.config.internalTransactionalEventListenerFactory" : 0, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : 0, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration" : 0, + "mvcValidator" : 1, + "applicationAvailability" : 1, + "defaultTemplateResolver" : 17, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration" : 0, + "mvcResourceUrlProvider" : 2, + "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" : 1, + "sslInfo" : 0, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : 1, + "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" : 12, + "servletEndpointRegistrar" : 30, + "archivedReportExporter" : 7, + "org.springframework.boot.autoconfigure.AutoConfigurationPackages" : 10, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration" : 0, + "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" : 2, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : 1, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration" : 0, + "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" : 1, + "jackson3pageModule" : 1, + "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" : 3, + "hikariPoolDataSourceMetadataProvider" : 1, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : 0, + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : 0, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : 0, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : 0, + "org.springframework.data.web.config.SpringDataWebConfiguration" : 2, + "legacyImportService" : 16, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : 1, + "propertiesEndpointAccessResolver" : 1, + "errorPageRegistrarBeanPostProcessor" : 0, + "mvcConversionService" : 7, + "endpointJackson2ObjectMapperWebMvcConfigurer" : 7, + "initializeAuthenticationProviderBeanManagerConfigurer" : 1, + "org.springframework.context.annotation.internalPersistenceAnnotationProcessor" : 0, + "controllerEndpointDiscoverer" : 2, + "org.springframework.boot.context.properties.BoundConfigurationProperties" : 0, + "diskSpaceHealthIndicator" : 1, + "jvmMemoryMetrics" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : 0, + "mvcPathMatcher" : 1, + "handlerExceptionResolver" : 6, + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration" : 0, + "basicErrorController" : 5, + "pingHealthContributor" : 0, + "sslHealthIndicator" : 3, + "healthEndpointGroupMembershipValidator" : 1, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" : 0, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration" : 0, + "groupsHealthContributorNameValidator" : 0, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration" : 0, + "namedParameterJdbcTemplate" : 3, + "simpleAsyncTaskExecutorBuilder" : 1, + "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" : 3, + "spelValueExpressionResolver" : 0, + "org.springframework.scheduling.config.internalAsyncAnnotationProcessor" : 23, + "mvcViewResolver" : 2, + "simpleConfig" : 5, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration" : 0, + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : 0, + "requestDataValueProcessor" : 1, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : 0, + "observationRegistry" : 93, + "mvcUriComponentsContributor" : 2, + "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" : 0, + "webAccessPropertiesOperationFilter" : 1, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration" : 0, + "readinessStateHealthIndicator" : 1, + "objectPostProcessor" : 3, + "jpaSharedEM_entityManagerFactory" : 13, + "wiredoctorDemoApplication" : 0, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : 0, + "templateEngine" : 60, + "jackson3GeoModule" : 9, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration" : 0, + "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" : 2, + "platformTransactionManagerCustomizers" : 3, + "securityFilterChainRegistration" : 7, + "data-jpa.repository-aot-processor#0" : 5, + "endpointCachingOperationInvokerAdvisor" : 1, + "defaultServletHandlerMapping" : 0, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : 2, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : 0, + "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" : 0, + "persistenceExceptionTranslationPostProcessor" : 2, + "characterEncodingFilter" : 4, + "observationRegistryPostProcessor" : 3, + "sortCustomizer" : 0, + "webEndpointDiscoverer" : 27, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" : 0, + "org.springframework.security.config.annotation.web.configuration.ObservationConfiguration" : 0, + "preserveErrorControllerTargetClassPostProcessor" : 0, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : 0, + "logbackMetrics" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration" : 0, + "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties" : 1, + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : 0, + "propertySourcesPlaceholderConfigurer" : 1, + "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration" : 8, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : 0, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : 0, + "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties" : 1, + "methodValidationPostProcessor" : 33, + "wireDoctorGhostReportWriter" : 6, + "jsonComponentModule" : 5, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" : 32, + "entityManagerFactoryBuilder" : 42, + "org.springframework.context.event.internalEventListenerFactory" : 0, + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration" : 0, + "webSocketWebServerCustomizer" : 1, + "clientConvertersCustomizer" : 1, + "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" : 2, + "springSecurityFilterChain" : 16, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : 23, + "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" : 1, + "healthStatusAggregator" : 4, + "endpointJsonMapper" : 1, + "enableGlobalAuthenticationAutowiredConfigurer" : 1, + "transactionTemplate" : 1, + "mvcUrlPathHelper" : 1, + "jsonMapperBuilder" : 80, + "servletWebServerFactoryCustomizer" : 29, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : 0, + "inMemoryUserDetailsManager" : 7, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : 0, + "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" : 16, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : 0, + "jpa.named-queries#0" : 3, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration" : 0, + "filterChainDecoratorPostProcessor" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : 0, + "metricsObservationHandlerGroup" : 2, + "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" : 17, + "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" : 3, + "transactionInterceptor" : 7, + "simpleMeterRegistry" : 56, + "authenticationEventPublisher" : 6, + "bootstrapExecutorAliasPostProcessor" : 0, + "startupTimeMetrics" : 1, + "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" : 1, + "multipartConfigElement" : 6, + "requestContextFilter" : 3, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration" : 0, + "pageableResolver" : 3, + "availabilityProbesHealthEndpointGroupsPostProcessor" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : 0, + "handlerFunctionAdapter" : 1, + "localeResolver" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" : 1, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration" : 0, + "jvmHeapPressureMetrics" : 3, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : 0, + "welcomePageNotAcceptableHandlerMapping" : 3, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration" : 0, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : 0, + "endpointOperationParameterMapper" : 3, + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration" : 0, + "spring.transaction-org.springframework.boot.transaction.autoconfigure.TransactionProperties" : 1, + "jpaVendorAdapter" : 36, + "sslBundleRegistry" : 15, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : 15, + "wireDoctorAnalyzer" : 3, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : 0, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : 0, + "jacksonGeoModule" : 4, + "meterRegistryCloser" : 1, + "mvcContentNegotiationManager" : 173, "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : 0, - "jacksonObjectMapper" : 1, - "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration" : 0, - "httpMessageConvertersRestClientCustomizer" : 0, - "clientHttpRequestFactorySettings" : 0, - "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : 0, - "sslPropertiesSslBundleRegistrar" : 0 + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : 0, + "httpRequestHandlerAdapter" : 0, + "asyncMailer" : 6, + "org.springframework.aop.framework.autoproxy.defaultProxyConfig" : 1, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration" : 0, + "sslPropertiesSslBundleRegistrar" : 3, + "org.springframework.context.annotation.internalCommonAnnotationProcessor" : 2, + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" : 0, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : 0, + "defaultMeterObservationHandler" : 67, + "notificationService" : 7, + "simpleControllerHandlerAdapter" : 0, + "resourceHandlerMapping" : 13, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : 0, + "simpleAsyncTaskSchedulerBuilder" : 1, + "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : 0, + "healthContributorRegistry" : 30, + "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" : 1, + "org.springframework.transaction.config.internalTransactionAdvisor" : 33, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : 0, + "eagerJpaMetamodelCacheCleanup" : 0, + "propertiesObservationFilter" : 9, + "persistenceManagedTypes" : 7, + "micrometerClock" : 1, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : 0, + "propertiesMeterFilter" : 2, + "problemDetailJsonMapperBuilderCustomizer" : 1, + "demoSecurityConfig" : 1, + "jacksonJsonMapper" : 122, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : 0, + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : 0, + "endpointJsonMapperWebMvcConfigurer" : 2, + "diskSpaceMetrics" : 0, + "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup" : 0, + "servletEndpointDiscoverer" : 15, + "metricsHttpServerUriTagFilter" : 3, + "eagerTaskExecutorMetrics" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration" : 0, + "privilegeEvaluator" : 0, + "jacksonMixinModule" : 6, + "healthEndpoint" : 38, + "viewControllerHandlerMapping" : 1, + "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : 2, + "mvcPatternParser" : 1, + "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor" : 0, + "dispatcherServlet" : 20, + "jvmInfoMetrics" : 0, + "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" : 4, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : 0, + "demoChain" : 387, + "webEndpointServletHandlerMapping" : 16, + "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor" : 1, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : 0, + "threadPoolTaskExecutorBuilder" : 7, + "processorMetrics" : 8, + "inventoryService" : 6, + "transactionAttributeSource" : 4, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration" : 0, + "transactionExecutionListeners" : 1, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : 0, + "serverConvertersCustomizer" : 3, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : 0, + "transactionManager" : 6, + "org.springframework.data.web.config.SpringDataJackson3Configuration" : 4, + "errorPageCustomizer" : 38, + "openEntityManagerInViewInterceptorConfigurer" : 5, + "tomcatWebServerFactoryCustomizer" : 11, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : 0, + "authenticationManagerPostProcessor" : 0, + "threadPoolTaskSchedulerBuilder" : 3, + "viewNameTranslator" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" : 0, + "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" : 7, + "pageableCustomizer" : 0, + "dispatcherServletRegistration" : 35, + "dataSource" : 90, + "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" : 1, + "healthEndpointGroupsBeanPostProcessor" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : 0, + "com.wiredoctor.WireDoctorAutoConfiguration" : 0, + "jpaMappingContext" : 27, + "tomcatServletWebServerFactory" : 176, + "mvcApiVersionStrategy" : 4, + "error" : 0, + "webAuthorizationManagerPostProcessor" : 2, + "jdbcConnectionDetails" : 1, + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : 0, + "jvmGcMetrics" : 5, + "offsetResolver" : 1, + "initializeUserDetailsBeanManagerConfigurer" : 1, + "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" : 5, + "jacksonJsonHttpMessageConvertersCustomizer" : 123, + "healthEndpointWebMvcHandlerMapping" : 6, + "defaultValidator" : 10, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration" : 0, + "welcomePageHandlerMapping" : 23, + "servletExposeExcludePropertyEndpointFilter" : 1, + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration" : 0, + "authenticationManagerBuilder" : 9, + "webMvcObservationFilter" : 114, + "securityDialect" : 7, + "pageModule" : 1, + "webSecurityExpressionHandler" : 16 }, "slowBeanThreshold" : 100, - "totalStartupMs" : 102, + "totalStartupMs" : 7067, "beanCategories" : { - "totalBeans" : 121, - "roleApplication" : 110, - "roleSupport" : 0, - "roleInfrastructure" : 11, - "userDefined" : 5, - "frameworkOwned" : 116 + "totalBeans" : 429, + "roleApplication" : 397, + "roleSupport" : 1, + "roleInfrastructure" : 31, + "userDefined" : 23, + "frameworkOwned" : 406 }, "proxies" : { - "cglibCount" : 0, + "cglibCount" : 18, "jdkCount" : 0, - "cglibBeans" : [ ], + "cglibBeans" : [ "archivedReportExporter", "legacyExportService", "legacyImportService", "asyncMailer", "auditService", "catalogCacheWarmer", "inventoryService", "notificationService", "orderController", "orderService", "pricingService", "dataSource", "jsonFactory", "jacksonJsonMapper", "securityDialect", "thymeleafViewResolver", "defaultTemplateResolver", "templateEngine" ], "jdkBeans" : [ ], - "notInstantiatedSkipped" : 8 + "notInstantiatedSkipped" : 4 }, "ghostCandidates" : { "confidence" : "LOW", "disclaimer" : "Heuristic: bean was eagerly instantiated, has no incoming dependencies, and no known entry point was detected from its metadata. NOT proof of dead code — reflective access, programmatic getBean() lookups and framework-collected usages are invisible to this analysis.", - "count" : 0, - "beans" : [ ], - "entryPointsExcluded" : 0, - "notInstantiatedExcluded" : 1 + "count" : 2, + "beans" : [ "archivedReportExporter", "catalogCacheWarmer" ], + "entryPointsExcluded" : 1, + "notInstantiatedExcluded" : 0 }, "smells" : { "highFanIn" : [ { - "beanName" : "com.wiredoctor.WireDoctorAutoConfiguration", + "beanName" : "auditService", + "inDegree" : 4, + "dependents" : [ "inventoryService", "notificationService", "orderService", "pricingService" ] + }, { + "beanName" : "pricingService", + "inDegree" : 2, + "dependents" : [ "catalogCacheWarmer", "orderService" ] + }, { + "beanName" : "asyncMailer", "inDegree" : 1, - "dependents" : [ "wireDoctorAnalyzer" ] + "dependents" : [ "notificationService" ] }, { - "beanName" : "wiredoctor-com.wiredoctor.WireDoctorProperties", + "beanName" : "demoSecurityConfig", "inDegree" : 1, - "dependents" : [ "wireDoctorAnalyzer" ] + "dependents" : [ "demoChain" ] + }, { + "beanName" : "inventoryService", + "inDegree" : 1, + "dependents" : [ "orderService" ] + }, { + "beanName" : "legacyExportService", + "inDegree" : 1, + "dependents" : [ "legacyImportService" ] + }, { + "beanName" : "legacyImportService", + "inDegree" : 1, + "dependents" : [ "legacyExportService" ] + }, { + "beanName" : "notificationService", + "inDegree" : 1, + "dependents" : [ "orderService" ] + }, { + "beanName" : "orderRepository", + "inDegree" : 1, + "dependents" : [ "orderService" ] + }, { + "beanName" : "orderService", + "inDegree" : 1, + "dependents" : [ "orderController" ] } ], "highFanOut" : [ { - "beanName" : "wireDoctorAnalyzer", + "beanName" : "orderService", + "outDegree" : 5, + "dependencies" : [ "orderRepository", "pricingService", "inventoryService", "notificationService", "auditService" ] + }, { + "beanName" : "orderRepository", + "outDegree" : 4, + "dependencies" : [ "jpa.named-queries#0", "jpa.OrderRepository.fragments#0", "jpaSharedEM_entityManagerFactory", "jpaMappingContext" ] + }, { + "beanName" : "notificationService", "outDegree" : 2, - "dependencies" : [ "com.wiredoctor.WireDoctorAutoConfiguration", "wiredoctor-com.wiredoctor.WireDoctorProperties" ] + "dependencies" : [ "auditService", "asyncMailer" ] + }, { + "beanName" : "catalogCacheWarmer", + "outDegree" : 1, + "dependencies" : [ "pricingService" ] + }, { + "beanName" : "inventoryService", + "outDegree" : 1, + "dependencies" : [ "auditService" ] + }, { + "beanName" : "legacyExportService", + "outDegree" : 1, + "dependencies" : [ "legacyImportService" ] + }, { + "beanName" : "legacyImportService", + "outDegree" : 1, + "dependencies" : [ "legacyExportService" ] + }, { + "beanName" : "orderController", + "outDegree" : 1, + "dependencies" : [ "orderService" ] + }, { + "beanName" : "pricingService", + "outDegree" : 1, + "dependencies" : [ "auditService" ] } ], "unstable" : [ { - "beanName" : "wireDoctorAnalyzer", - "instability" : 1.0, - "fanIn" : 0, - "fanOut" : 2 + "beanName" : "orderService", + "instability" : 0.83, + "fanIn" : 1, + "fanOut" : 5 + }, { + "beanName" : "orderRepository", + "instability" : 0.8, + "fanIn" : 1, + "fanOut" : 4 } ], "frameworkFiltered" : true, "fanIn" : { - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : 1, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : 1, - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration$ReactorNetty" : 1, - "org.springframework.context.annotation.AnnotationConfigApplicationContext@7aeb3664" : 4, - "clientHttpConnectorBuilder" : 1, - "spring.http.reactiveclient-org.springframework.boot.autoconfigure.http.client.reactive.HttpReactiveClientProperties" : 1, - "org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration" : 2, - "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : 1, - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$DefaultCodecsConfiguration" : 1, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration" : 1, - "spring.netty-org.springframework.boot.autoconfigure.netty.NettyProperties" : 1, - "jsonMixinModuleEntries" : 1, - "org.springframework.beans.factory.support.DefaultListableBeanFactory@785a632" : 1, - "spring.codec-org.springframework.boot.autoconfigure.codec.CodecProperties" : 1, - "jacksonObjectMapperBuilder" : 1, - "spring.http.codecs-org.springframework.boot.autoconfigure.http.codec.HttpCodecsProperties" : 1, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : 1, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : 2, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : 1, + "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : 2, + "healthEndpointGroups" : 3, + "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" : 1, + "webEndpointDiscoverer" : 3, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : 1, + "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" : 1, + "jdbcTemplate" : 1, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : 4, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : 8, + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : 1, + "openEntityManagerInViewInterceptor" : 1, + "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration" : 2, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : 1, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : 1, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : 1, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : 3, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : 1, + "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties" : 2, + "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" : 1, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" : 26, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : 1, + "entityManagerFactoryBuilder" : 1, + "pricingService" : 2, + "dataSourceScriptDatabaseInitializer" : 4, + "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" : 2, + "(inner bean)#4e41b993" : 1, + "endpointMediaTypes" : 2, + "jacksonMixinModuleEntries" : 1, + "springSecurityFilterChain" : 2, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : 2, + "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" : 1, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : 1, + "endpointJsonMapper" : 1, + "enableGlobalAuthenticationAutowiredConfigurer" : 1, + "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : 1, + "jsonMapperBuilder" : 1, + "repositoryTagsProvider" : 1, + "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" : 1, + "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" : 1, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : 1, + "dbHealthContributor" : 1, + "jpa.OrderRepository.fragments#0" : 1, + "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" : 3, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : 3, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : 1, + "jpa.named-queries#0" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : 5, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : 3, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : 1, + "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" : 2, + "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" : 1, + "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" : 1, + "transactionInterceptor" : 1, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : 3, + "simpleMeterRegistry" : 3, + "entityManagerFactory" : 1, + "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" : 3, + "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" : 1, + "wireDoctorGhostTracker" : 2, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" : 3, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : 7, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : 1, "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" : 2, - "spring.http.client-org.springframework.boot.autoconfigure.http.client.HttpClientProperties" : 1, - "spring.reactor-org.springframework.boot.autoconfigure.reactor.ReactorProperties" : 1, - "reactorResourceFactory" : 1, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration" : 1, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration" : 1, - "wiredoctor-com.wiredoctor.WireDoctorProperties" : 1, - "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration$ReactorNetty" : 1, - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration" : 1, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : 1, - "com.wiredoctor.WireDoctorAutoConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : 1, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : 1, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" : 6, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : 1, + "requestMappingHandlerAdapter" : 1, + "wiredoctor-com.wiredoctor.WireDoctorProperties" : 2, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : 2, + "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" : 3, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : 1, "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : 1, - "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration" : 1, - "spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties" : 1, - "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations$ReactorResourceFactoryConfiguration" : 1, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration" : 1, + "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : 1, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration" : 1, "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" : 1, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration" : 1, - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration" : 2, - "spring.reactor.netty-org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyProperties" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : 1, + "endpointOperationParameterMapper" : 1, + "orderService" : 1, + "jpaVendorAdapter" : 1, "sslBundleRegistry" : 2, - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration" : 1, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration" : 1, - "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration" : 3, - "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : 2, - "clientHttpConnectorSettings" : 1, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : 4, "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : 1, - "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : 1, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : 1, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" : 1, + "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" : 2, "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : 3, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : 1, "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : 1, "fileWatcher" : 1, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration" : 1, - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : 1, - "jacksonObjectMapper" : 2, - "environment" : 2, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration" : 1, - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : 1, - "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : 1, - "standardJacksonObjectMapperBuilderCustomizer" : 1, - "threadPoolTaskExecutorBuilder" : 1 + "springDataWebSettings" : 2, + "mvcContentNegotiationManager" : 6, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : 2, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : 1, + "environment" : 10, + "errorAttributes" : 1, + "asyncMailer" : 1, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : 2, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : 1, + "notificationService" : 1, + "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" : 11, + "org.springframework.data.web.config.SpringDataJacksonConfiguration" : 2, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : 1, + "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : 1, + "healthContributorRegistry" : 3, + "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" : 1, + "orderRepository" : 1, + "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration" : 1, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : 1, + "jackson2EndpointJsonMapper" : 1, + "persistenceManagedTypes" : 1, + "micrometerClock" : 2, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : 1, + "legacyExportService" : 1, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : 2, + "demoSecurityConfig" : 1, + "jacksonJsonMapper" : 1, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : 1, + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : 2, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" : 2, + "endpointJsonMapperWebMvcConfigurer" : 1, + "auditService" : 4, + "jsonFactory" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : 4, + "livenessStateHealthIndicator" : 1, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : 1, + "servletEndpointDiscoverer" : 3, + "mvcValidator" : 1, + "applicationAvailability" : 2, + "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" : 1, + "mvcResourceUrlProvider" : 7, + "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : 2, + "sslInfo" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : 1, + "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" : 2, + "dispatcherServlet" : 1, + "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" : 4, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : 3, + "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" : 1, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : 2, + "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" : 6, + "demoChain" : 1, + "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" : 3, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : 2, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : 1, + "threadPoolTaskExecutorBuilder" : 1, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : 1, + "inventoryService" : 1, + "(inner bean)#394e0104" : 1, + "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" : 20, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : 1, + "transactionAttributeSource" : 2, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : 1, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : 1, + "org.springframework.data.web.config.SpringDataWebConfiguration" : 4, + "legacyImportService" : 1, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : 1, + "transactionManager" : 1, + "org.springframework.data.web.config.SpringDataJackson3Configuration" : 2, + "propertiesEndpointAccessResolver" : 3, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : 1, + "mvcConversionService" : 9, + "endpointJackson2ObjectMapperWebMvcConfigurer" : 1, + "initializeAuthenticationProviderBeanManagerConfigurer" : 1, + "openEntityManagerInViewInterceptorConfigurer" : 1, + "controllerEndpointDiscoverer" : 3, + "diskSpaceHealthIndicator" : 1, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : 3, + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" : 1, + "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" : 2, + "pingHealthContributor" : 1, + "dispatcherServletRegistration" : 4, + "dataSource" : 3, + "sslHealthIndicator" : 1, + "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" : 6, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : 1, + "com.wiredoctor.WireDoctorAutoConfiguration" : 1, + "jpaMappingContext" : 1, + "groupsHealthContributorNameValidator" : 1, + "mvcApiVersionStrategy" : 2, + "namedParameterJdbcTemplate" : 1, + "jdbcConnectionDetails" : 1, + "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" : 5, + "initializeUserDetailsBeanManagerConfigurer" : 1, + "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" : 4, + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : 1, + "simpleConfig" : 1, + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : 1, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : 1, + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration" : 1, + "observationRegistry" : 2, + "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" : 1, + "readinessStateHealthIndicator" : 1, + "jpaSharedEM_entityManagerFactory" : 1, + "objectPostProcessor" : 4, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : 1, + "templateEngine" : 1, + "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" : 1 } }, "dependencies" : { - "totalBeans" : 121, - "totalEdges" : 71, - "cyclesCount" : 0, - "cycles" : [ ], - "orphanBeansCount" : 1, - "orphanBeans" : [ "lazyCanary" ], + "totalBeans" : 429, + "totalEdges" : 436, + "cyclesCount" : 1, + "cycles" : [ [ "legacyImportService", "legacyExportService" ] ], + "orphanBeansCount" : 3, + "orphanBeans" : [ "archivedReportExporter", "catalogCacheWarmer", "orderController" ], "graph" : { - "org.springframework.context.annotation.internalCommonAnnotationProcessor" : [ ], - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : [ ], + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : [ ], + "wireDoctorGhostTrackingPostProcessor" : [ "wireDoctorGhostTracker", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "environment" ], "applicationTaskExecutor" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration", "threadPoolTaskExecutorBuilder" ], - "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter" : [ ], - "forceAutoProxyCreatorToUseClassProxying" : [ ], - "spring.http.reactiveclient-org.springframework.boot.autoconfigure.http.client.reactive.HttpReactiveClientProperties" : [ ], - "org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration" : [ "spring.http.client-org.springframework.boot.autoconfigure.http.client.HttpClientProperties" ], - "simpleAsyncTaskSchedulerBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" ], - "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : [ ], - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$DefaultCodecsConfiguration" : [ ], - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration" : [ ], + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : [ ], + "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" : [ ], + "healthEndpointGroups" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : [ ], + "hikariDataSourceMeterBinder" : [ "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" ], + "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" : [ ], + "jdbcTemplate" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration", "dataSource", "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" ], + "webEndpointPathMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : [ ], "org.springframework.context.annotation.internalConfigurationAnnotationProcessor" : [ "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" ], - "nettyAutoConfigurationLazyInitializationExcludeFilter" : [ ], - "propertySourcesPlaceholderConfigurer" : [ ], - "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration" : [ ], - "parameterNamesModule" : [ "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration" ], - "reactorResourceFactoryClientHttpConnectorBuilderCustomizer" : [ "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration$ReactorNetty", "reactorResourceFactory" ], - "spring.http.codecs-org.springframework.boot.autoconfigure.http.codec.HttpCodecsProperties" : [ ], - "org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration" : [ "spring.netty-org.springframework.boot.autoconfigure.netty.NettyProperties" ], - "reactorResourceFactory" : [ "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations$ReactorResourceFactoryConfiguration", "spring.reactor.netty-org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyProperties" ], - "defaultCodecCustomizer" : [ "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$DefaultCodecsConfiguration", "spring.codec-org.springframework.boot.autoconfigure.codec.CodecProperties", "spring.http.codecs-org.springframework.boot.autoconfigure.http.codec.HttpCodecsProperties", "environment" ], - "stringHttpMessageConverter" : [ "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", "environment" ], - "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration" : [ ], - "messageConverters" : [ "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration" ], - "jsonComponentModule" : [ "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration" ], - "org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration" : [ ], - "org.springframework.context.event.internalEventListenerFactory" : [ ], - "mappingJackson2HttpMessageConverter" : [ "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration", "jacksonObjectMapper" ], - "applicationTaskExecutorAsyncConfigurer" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@785a632" ], - "restTemplateBuilderConfigurer" : [ ], - "spring.reactor.netty-org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyProperties" : [ ], - "restClientBuilderConfigurer" : [ "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration" ], - "applicationAvailability" : [ "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" ], - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration" : [ ], - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration" : [ ], - "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : [ ], - "clientHttpConnectorSettings" : [ "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration" ], + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : [ ], + "openEntityManagerInViewInterceptor" : [ "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" ], + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : [ ], + "beanNameViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" ], + "pathPatternRequestMatcherBuilder" : [ "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration", "dispatcherServletRegistration" ], + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : [ "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" ], + "viewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : [ ], + "projectingArgumentResolverBeanPostProcessor" : [ ], + "tomcatServletWebServerFactoryCustomizer" : [ "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration", "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" ], + "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" : [ ], + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : [ "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "pricingService" : [ "auditService" ], + "dataSourceScriptDatabaseInitializer" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration", "dataSource", "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" ], + "applicationTaskExecutorAsyncConfigurer" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "meterRegistryPostProcessor" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "endpointMediaTypes" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "jacksonMixinModuleEntries" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "jvmCompilationMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "orderController" : [ "orderService" ], + "jdbcConnectionDetailsHikariBeanPostProcessor" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : [ ], "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : [ ], - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : [ "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" ], + "repositoryTagsProvider" : [ "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" ], + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration" : [ ], + "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" : [ ], + "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" : [ ], "org.springframework.boot.context.internalConfigurationPropertiesBinder" : [ ], - "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor" : [ ], - "org.springframework.boot.autoconfigure.AutoConfigurationPackages" : [ ], - "restClientBuilder" : [ ], - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : [ ], - "reactorAutoConfigurationLazyInitializationExcludeFilter" : [ ], - "spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties" : [ ], - "reactorNettyHttpClientMapperClientHttpConnectorBuilderCustomizer" : [ "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration$ReactorNetty" ], - "org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration" : [ "spring.reactor-org.springframework.boot.autoconfigure.reactor.ReactorProperties" ], - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration" : [ ], - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : [ ], + "dbHealthContributor" : [ "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" ], + "dataSourcePoolMetadataMeterBinder" : [ "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration" : [ ], + "jpa.OrderRepository.fragments#0" : [ ], + "catalogCacheWarmer" : [ "pricingService" ], + "webServerFactoryCustomizerBeanPostProcessor" : [ ], + "controllerEndpointHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "controllerEndpointDiscoverer", "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "propertiesEndpointAccessResolver" ], "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : [ ], - "standardJacksonObjectMapperBuilderCustomizer" : [ "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration", "spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties" ], - "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor" : [ ], - "threadPoolTaskExecutorBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration", "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" ], - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : [ "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" ], - "wireDoctorAnalyzerIntegrationTest.TestApp" : [ ], + "jdbcClient" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration", "namedParameterJdbcTemplate" ], + "observabilitySchedulingConfigurer" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration", "observationRegistry" ], "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : [ ], - "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : [ ], - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration$ReactorNetty" : [ ], - "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : [ ], - "bootstrapExecutorAliasPostProcessor" : [ ], - "clientHttpConnectorBuilder" : [ "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration" ], - "jacksonCodecCustomizer" : [ "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration", "jacksonObjectMapper" ], - "webClientSsl" : [ "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration", "clientHttpConnectorBuilder", "clientHttpConnectorSettings", "sslBundleRegistry" ], + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : [ ], + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration" : [ ], + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : [ ], + "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" : [ ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : [ ], + "conventionErrorViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" ], + "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" : [ ], "org.springframework.context.event.internalEventListenerProcessor" : [ ], - "spring.netty-org.springframework.boot.autoconfigure.netty.NettyProperties" : [ ], - "jsonMixinModuleEntries" : [ "org.springframework.context.annotation.AnnotationConfigApplicationContext@7aeb3664" ], - "spring.codec-org.springframework.boot.autoconfigure.codec.CodecProperties" : [ ], - "org.springframework.boot.context.properties.BoundConfigurationProperties" : [ ], - "jacksonObjectMapperBuilder" : [ "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration", "org.springframework.context.annotation.AnnotationConfigApplicationContext@7aeb3664", "standardJacksonObjectMapperBuilderCustomizer" ], - "restClientSsl" : [ "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration", "sslBundleRegistry" ], - "threadPoolTaskSchedulerBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration", "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" ], + "wireDoctorGhostTracker" : [ "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" : [ "spring.web-org.springframework.boot.autoconfigure.web.WebProperties", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "formContentFilter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : [ ], + "defaultViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" ], + "routerFunctionMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "mvcResourceUrlProvider", "mvcApiVersionStrategy" ], + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" : [ "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : [ ], "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" : [ ], - "spring.http.client-org.springframework.boot.autoconfigure.http.client.HttpClientProperties" : [ ], - "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration" : [ ], - "spring.reactor-org.springframework.boot.autoconfigure.reactor.ReactorProperties" : [ ], - "restTemplateBuilder" : [ ], - "exchangeStrategiesCustomizer" : [ "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration" ], - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : [ ], + "healthEndpointWebExtension" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration", "healthContributorRegistry", "healthEndpointGroups", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration" : [ ], + "multipartResolver" : [ "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : [ ], + "conversionServicePostProcessor" : [ ], + "requestMappingHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager", "mvcApiVersionStrategy", "mvcConversionService", "mvcResourceUrlProvider" ], + "webExposeExcludePropertyEndpointFilter" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], "lifecycleProcessor" : [ "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration", "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" : [ ], "org.springframework.aop.config.internalAutoProxyCreator" : [ ], - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration" : [ ], - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration" : [ ], + "requestMappingHandlerAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager", "mvcConversionService", "mvcValidator" ], + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : [ ], + "tomcatMetricsBinder" : [ "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration", "simpleMeterRegistry" ], "wiredoctor-com.wiredoctor.WireDoctorProperties" : [ ], - "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration$ReactorNetty" : [ ], - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration" : [ ], - "lazyCanary" : [ ], - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : [ ], - "com.wiredoctor.WireDoctorAutoConfiguration" : [ ], + "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" : [ ], + "mvcHandlerMappingIntrospector" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" : [ ], "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : [ ], - "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration" : [ ], - "spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties" : [ ], - "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations$ReactorResourceFactoryConfiguration" : [ ], - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration" : [ ], + "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension" : [ ], + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : [ ], + "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" : [ ], + "sslMeterBinder" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration", "sslBundleRegistry" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : [ ], "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" : [ ], "org.springframework.context.annotation.internalAutowiredAnnotationProcessor" : [ ], - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration" : [ ], - "jsonMixinModule" : [ "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration", "org.springframework.context.annotation.AnnotationConfigApplicationContext@7aeb3664", "jsonMixinModuleEntries" ], - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration" : [ "spring.http.reactiveclient-org.springframework.boot.autoconfigure.http.client.reactive.HttpReactiveClientProperties" ], - "simpleAsyncTaskExecutorBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" ], "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration" : [ ], - "clientHttpRequestFactoryBuilder" : [ "org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration" ], - "sslBundleRegistry" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" ], - "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration" : [ ], - "wireDoctorAnalyzer" : [ "com.wiredoctor.WireDoctorAutoConfiguration", "wiredoctor-com.wiredoctor.WireDoctorProperties" ], - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : [ ], + "orderService" : [ "orderRepository", "pricingService", "inventoryService", "notificationService", "auditService" ], + "metricsRepositoryMethodInvocationListenerBeanPostProcessor" : [ ], + "classLoaderMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" : [ ], - "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : [ "org.springframework.context.annotation.AnnotationConfigApplicationContext@7aeb3664", "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" ], + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" : [ "objectPostProcessor", "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration", "mvcContentNegotiationManager" ], + "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" : [ ], + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" ], "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : [ ], - "webClientHttpConnectorCustomizer" : [ ], - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration" : [ ], + "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration" : [ ], "fileWatcher" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" ], - "webClientBuilder" : [ ], - "clientHttpConnector" : [ ], - "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : [ ], - "jacksonObjectMapper" : [ "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration", "jacksonObjectMapperBuilder" ], - "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration" : [ ], - "clientHttpRequestFactorySettings" : [ "org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration" ], - "httpMessageConvertersRestClientCustomizer" : [ "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration" ], + "springDataWebSettings" : [ "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" ], + "sortResolver" : [ "org.springframework.data.web.config.SpringDataWebConfiguration" ], + "stringHttpMessageConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" ], + "springSecurityPathPatternParserBeanDefinitionRegistryPostProcessor" : [ ], + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : [ "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" ], + "standardJsonMapperBuilderCustomizer" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "thymeleafViewResolver" : [ "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration", "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties", "templateEngine" ], + "errorAttributes" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" ], + "beanNameHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "mvcResourceUrlProvider" ], "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : [ "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" ], - "sslPropertiesSslBundleRegistrar" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration", "fileWatcher" ] + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : [ ], + "delegatingApplicationListener" : [ ], + "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" : [ ], + "org.springframework.data.web.config.SpringDataJacksonConfiguration" : [ "springDataWebSettings" ], + "flashMapManager" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration" : [ "simpleMeterRegistry" ], + "orderRepository" : [ "jpa.named-queries#0", "jpa.OrderRepository.fragments#0", "jpaSharedEM_entityManagerFactory", "jpaMappingContext" ], + "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration" : [ ], + "jackson2EndpointJsonMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" ], + "requestMatcherProvider" : [ "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration", "dispatcherServletRegistration" ], + "legacyExportService" : [ "legacyImportService" ], + "healthHttpCodeStatusMapper" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : [ ], + "metricsRepositoryMethodInvocationListener" : [ "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration", "repositoryTagsProvider" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" : [ "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" ], + "uptimeMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" ], + "controllerExposeExcludePropertyEndpointFilter" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "pathMappedEndpoints" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "servletEndpointDiscoverer", "webEndpointDiscoverer", "controllerEndpointDiscoverer" ], + "jvmThreadMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "auditService" : [ ], + "standardJsonFactoryBuilderCustomizer" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" ], + "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar" : [ ], + "jsonFactory" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : [ ], + "managementServletContext" : [ "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" ], + "fileDescriptorMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" ], + "livenessStateHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "applicationAvailability" ], + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" : [ ], + "org.springframework.transaction.config.internalTransactionalEventListenerFactory" : [ ], + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : [ ], + "mvcValidator" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration" : [ ], + "applicationAvailability" : [ "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" ], + "defaultTemplateResolver" : [ "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" ], + "mvcResourceUrlProvider" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" : [ ], + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration" : [ ], + "sslInfo" : [ "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration", "sslBundleRegistry" ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : [ "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" ], + "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" : [ ], + "servletEndpointRegistrar" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "servletEndpointDiscoverer", "dispatcherServletRegistration", "propertiesEndpointAccessResolver" ], + "archivedReportExporter" : [ ], + "org.springframework.boot.autoconfigure.AutoConfigurationPackages" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration" : [ ], + "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" : [ ], + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : [ "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration" : [ ], + "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" : [ ], + "jackson3pageModule" : [ "org.springframework.data.web.config.SpringDataJackson3Configuration" ], + "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" : [ ], + "hikariPoolDataSourceMetadataProvider" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" ], + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : [ "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" ], + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : [ ], + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : [ ], + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : [ ], + "org.springframework.data.web.config.SpringDataWebConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "legacyImportService" : [ "legacyExportService" ], + "propertiesEndpointAccessResolver" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration", "environment" ], + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : [ ], + "errorPageRegistrarBeanPostProcessor" : [ ], + "mvcConversionService" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "initializeAuthenticationProviderBeanManagerConfigurer" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "endpointJackson2ObjectMapperWebMvcConfigurer" : [ "jackson2EndpointJsonMapper" ], + "org.springframework.context.annotation.internalPersistenceAnnotationProcessor" : [ ], + "controllerEndpointDiscoverer" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "org.springframework.boot.context.properties.BoundConfigurationProperties" : [ ], + "diskSpaceHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration", "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" ], + "jvmMemoryMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : [ ], + "mvcPathMatcher" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "handlerExceptionResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager" ], + "basicErrorController" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration", "errorAttributes" ], + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration" : [ ], + "pingHealthContributor" : [ "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" ], + "sslHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration", "sslInfo", "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" ], + "healthEndpointGroupMembershipValidator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties", "healthContributorRegistry" ], + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" ], + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration" : [ ], + "groupsHealthContributorNameValidator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration" : [ ], + "jpaContext" : [ ], + "namedParameterJdbcTemplate" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration", "jdbcTemplate" ], + "simpleAsyncTaskExecutorBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" ], + "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" : [ ], + "spelValueExpressionResolver" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" ], + "org.springframework.scheduling.config.internalAsyncAnnotationProcessor" : [ "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" ], + "mvcViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager" ], + "simpleConfig" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration", "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" ], + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration" : [ ], + "requestDataValueProcessor" : [ "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" ], + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : [ ], + "observationRegistry" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" ], + "mvcUriComponentsContributor" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "requestMappingHandlerAdapter" ], + "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" : [ ], + "webAccessPropertiesOperationFilter" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "propertiesEndpointAccessResolver" ], + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration" : [ ], + "readinessStateHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "applicationAvailability" ], + "jpaSharedEM_entityManagerFactory" : [ "entityManagerFactory" ], + "objectPostProcessor" : [ "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "wiredoctorDemoApplication" : [ ], + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : [ ], + "jackson3GeoModule" : [ "org.springframework.data.web.config.SpringDataJackson3Configuration" ], + "templateEngine" : [ "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration", "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration" : [ ], + "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" : [ ], + "platformTransactionManagerCustomizers" : [ "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" ], + "securityFilterChainRegistration" : [ "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration", "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" ], + "data-jpa.repository-aot-processor#0" : [ ], + "endpointCachingOperationInvokerAdvisor" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration", "environment" ], + "defaultServletHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : [ "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" ], + "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : [ ], + "persistenceExceptionTranslationPostProcessor" : [ "environment" ], + "observationRegistryPostProcessor" : [ ], + "characterEncodingFilter" : [ "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration", "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" ], + "sortCustomizer" : [ "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" ], + "webEndpointDiscoverer" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "endpointOperationParameterMapper", "endpointMediaTypes" ], + "org.springframework.security.config.annotation.web.configuration.ObservationConfiguration" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" : [ ], + "preserveErrorControllerTargetClassPostProcessor" : [ ], + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : [ ], + "logbackMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" ], + "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties" : [ ], + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : [ ], + "propertySourcesPlaceholderConfigurer" : [ ], + "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration" : [ "enableGlobalAuthenticationAutowiredConfigurer", "initializeUserDetailsBeanManagerConfigurer", "initializeAuthenticationProviderBeanManagerConfigurer", "objectPostProcessor" ], + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : [ ], + "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties" : [ ], + "methodValidationPostProcessor" : [ "environment" ], + "wireDoctorGhostReportWriter" : [ "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration", "wireDoctorGhostTracker", "wiredoctor-com.wiredoctor.WireDoctorProperties" ], + "jsonComponentModule" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" : [ "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", "org.springframework.data.web.config.SpringDataWebConfiguration", "openEntityManagerInViewInterceptorConfigurer", "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration", "endpointJsonMapperWebMvcConfigurer", "endpointJackson2ObjectMapperWebMvcConfigurer" ], + "entityManagerFactoryBuilder" : [ "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration", "jpaVendorAdapter", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "org.springframework.context.event.internalEventListenerFactory" : [ ], + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration" : [ ], + "webSocketWebServerCustomizer" : [ "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" ], + "clientConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" ], + "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" : [ ], + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : [ "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" ], + "springSecurityFilterChain" : [ "(inner bean)#4e41b993", "(inner bean)#394e0104" ], + "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" : [ ], + "healthStatusAggregator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "endpointJsonMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" ], + "enableGlobalAuthenticationAutowiredConfigurer" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "mvcUrlPathHelper" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "jsonMapperBuilder" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", "jsonFactory" ], + "servletWebServerFactoryCustomizer" : [ "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration", "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" ], + "transactionTemplate" : [ "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration", "transactionManager" ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : [ ], + "inMemoryUserDetailsManager" : [ "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration", "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" ], + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : [ ], + "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" : [ ], + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : [ ], + "jpa.named-queries#0" : [ ], + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : [ ], + "filterChainDecoratorPostProcessor" : [ ], + "metricsObservationHandlerGroup" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" ], + "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" : [ "objectPostProcessor", "demoChain" ], + "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" : [ ], + "transactionInterceptor" : [ "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration", "transactionAttributeSource" ], + "simpleMeterRegistry" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration", "simpleConfig", "micrometerClock" ], + "authenticationEventPublisher" : [ "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "bootstrapExecutorAliasPostProcessor" : [ ], + "entityManagerFactory" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration", "entityManagerFactoryBuilder", "persistenceManagedTypes" ], + "startupTimeMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration", "simpleMeterRegistry" ], + "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" : [ ], + "multipartConfigElement" : [ "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" ], + "requestContextFilter" : [ ], + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration" : [ ], + "pageableResolver" : [ "org.springframework.data.web.config.SpringDataWebConfiguration" ], + "availabilityProbesHealthEndpointGroupsPostProcessor" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "environment" ], + "localeResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "handlerFunctionAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" : [ ], + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration" : [ "environment" ], + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : [ ], + "jvmHeapPressureMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "welcomePageNotAcceptableHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "mvcConversionService", "mvcResourceUrlProvider" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration" : [ ], + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : [ ], + "endpointOperationParameterMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" ], + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration" : [ ], + "sslBundleRegistry" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" ], + "spring.transaction-org.springframework.boot.transaction.autoconfigure.TransactionProperties" : [ ], + "jpaVendorAdapter" : [ "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" ], + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : [ "dataSource", "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties", "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : [ ], + "wireDoctorAnalyzer" : [ "com.wiredoctor.WireDoctorAutoConfiguration", "wiredoctor-com.wiredoctor.WireDoctorProperties" ], + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : [ ], + "jacksonGeoModule" : [ "org.springframework.data.web.config.SpringDataJacksonConfiguration" ], + "meterRegistryCloser" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "mvcContentNegotiationManager" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : [ ], + "httpRequestHandlerAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "asyncMailer" : [ ], + "org.springframework.aop.framework.autoproxy.defaultProxyConfig" : [ ], + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration" : [ ], + "sslPropertiesSslBundleRegistrar" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration", "fileWatcher" ], + "org.springframework.context.annotation.internalCommonAnnotationProcessor" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : [ ], + "defaultMeterObservationHandler" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "micrometerClock", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" : [ ], + "notificationService" : [ "auditService", "asyncMailer" ], + "resourceHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager", "mvcConversionService", "mvcResourceUrlProvider" ], + "simpleControllerHandlerAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : [ ], + "simpleAsyncTaskSchedulerBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" ], + "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : [ ], + "healthContributorRegistry" : [ "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration", "livenessStateHealthIndicator", "readinessStateHealthIndicator", "diskSpaceHealthIndicator", "sslHealthIndicator", "pingHealthContributor", "dbHealthContributor", "groupsHealthContributorNameValidator" ], + "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" : [ ], + "org.springframework.transaction.config.internalTransactionAdvisor" : [ "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration", "transactionAttributeSource", "transactionInterceptor" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : [ ], + "eagerJpaMetamodelCacheCleanup" : [ ], + "propertiesObservationFilter" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" ], + "micrometerClock" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" ], + "persistenceManagedTypes" : [ "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : [ ], + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : [ "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" ], + "propertiesMeterFilter" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "demoSecurityConfig" : [ ], + "problemDetailJsonMapperBuilderCustomizer" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : [ ], + "jacksonJsonMapper" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", "jsonMapperBuilder" ], + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : [ ], + "endpointJsonMapperWebMvcConfigurer" : [ "endpointJsonMapper" ], + "diskSpaceMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup" : [ ], + "servletEndpointDiscoverer" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "metricsHttpServerUriTagFilter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "eagerTaskExecutorMetrics" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration" : [ ], + "jacksonMixinModule" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "jacksonMixinModuleEntries" ], + "privilegeEvaluator" : [ "springSecurityFilterChain", "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" ], + "healthEndpoint" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "healthContributorRegistry", "healthEndpointGroups", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : [ ], + "viewControllerHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "mvcResourceUrlProvider" ], + "mvcPatternParser" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor" : [ ], + "dispatcherServlet" : [ "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" ], + "jvmInfoMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : [ ], + "demoChain" : [ "demoSecurityConfig", "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" ], + "webEndpointServletHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "webEndpointDiscoverer", "servletEndpointDiscoverer", "controllerEndpointDiscoverer", "endpointMediaTypes", "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "environment" ], + "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor" : [ ], + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : [ ], + "threadPoolTaskExecutorBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration", "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : [ ], + "processorMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" ], + "inventoryService" : [ "auditService" ], + "transactionAttributeSource" : [ "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration" : [ ], + "transactionExecutionListeners" : [ "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" ], + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : [ ], + "serverConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : [ ], + "org.springframework.data.web.config.SpringDataJackson3Configuration" : [ "springDataWebSettings" ], + "transactionManager" : [ "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" ], + "errorPageCustomizer" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration", "dispatcherServletRegistration" ], + "openEntityManagerInViewInterceptorConfigurer" : [ "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration", "openEntityManagerInViewInterceptor" ], + "tomcatWebServerFactoryCustomizer" : [ "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration", "environment", "server-org.springframework.boot.web.server.autoconfigure.ServerProperties", "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : [ ], + "authenticationManagerPostProcessor" : [ ], + "threadPoolTaskSchedulerBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration", "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" ], + "viewNameTranslator" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" : [ ], + "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" : [ ], + "dispatcherServletRegistration" : [ "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration", "dispatcherServlet", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" ], + "pageableCustomizer" : [ "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" ], + "dataSource" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari", "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties", "jdbcConnectionDetails", "environment" ], + "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" : [ ], + "healthEndpointGroupsBeanPostProcessor" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : [ ], + "com.wiredoctor.WireDoctorAutoConfiguration" : [ ], + "jpaMappingContext" : [ ], + "tomcatServletWebServerFactory" : [ "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" ], + "mvcApiVersionStrategy" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "error" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" ], + "webAuthorizationManagerPostProcessor" : [ ], + "jdbcConnectionDetails" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration", "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" ], + "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" : [ ], + "offsetResolver" : [ "org.springframework.data.web.config.SpringDataWebConfiguration" ], + "jvmGcMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : [ ], + "initializeUserDetailsBeanManagerConfigurer" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "jacksonJsonHttpMessageConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration", "jacksonJsonMapper" ], + "healthEndpointWebMvcHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration", "webEndpointDiscoverer", "healthEndpointGroups" ], + "defaultValidator" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "welcomePageHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "mvcConversionService", "mvcResourceUrlProvider" ], + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration" : [ ], + "servletExposeExcludePropertyEndpointFilter" : [ "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" ], + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration" : [ ], + "authenticationManagerBuilder" : [ "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration", "objectPostProcessor", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "webMvcObservationFilter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration", "observationRegistry", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" ], + "securityDialect" : [ "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" ], + "pageModule" : [ "org.springframework.data.web.config.SpringDataJacksonConfiguration" ], + "webSecurityExpressionHandler" : [ "springSecurityFilterChain", "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" ] }, "graphTruncated" : false }, - "lazySuggestions" : [ ], + "lazySuggestions" : [ { + "beanName" : "legacyExportService", + "breaksCycles" : [ 0 ], + "downstreamImpact" : 1 + }, { + "beanName" : "legacyImportService", + "breaksCycles" : [ 0 ], + "downstreamImpact" : 1 + } ], "criticalPath" : { "available" : true, - "totalMs" : 16, - "percentOfReadiness" : 15.7, + "totalMs" : 1169, + "percentOfReadiness" : 16.5, "path" : [ { - "beanName" : "jsonMixinModuleEntries", - "ownMs" : 8, - "cumulativeMs" : 8 + "beanName" : "jackson2EndpointJsonMapper", + "ownMs" : 3, + "cumulativeMs" : 3 }, { - "beanName" : "jsonMixinModule", - "ownMs" : 8, - "cumulativeMs" : 16 + "beanName" : "endpointJackson2ObjectMapperWebMvcConfigurer", + "ownMs" : 7, + "cumulativeMs" : 10 + }, { + "beanName" : "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", + "ownMs" : 32, + "cumulativeMs" : 42 + }, { + "beanName" : "mvcContentNegotiationManager", + "ownMs" : 173, + "cumulativeMs" : 215 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration", + "ownMs" : 193, + "cumulativeMs" : 408 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", + "ownMs" : 341, + "cumulativeMs" : 749 + }, { + "beanName" : "demoChain", + "ownMs" : 387, + "cumulativeMs" : 1136 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration", + "ownMs" : 17, + "cumulativeMs" : 1153 + }, { + "beanName" : "webSecurityExpressionHandler", + "ownMs" : 16, + "cumulativeMs" : 1169 } ], "disclaimer" : "Instantiation-weighted approximation; parallel init and background threads are not modeled." }, @@ -916,85 +1890,196 @@ "outcome" : "matched" }, "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.audit.AuditAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnProperty (wiredoctor.ghost-tracking.enabled=true) did not find property 'wiredoctor.ghost-tracking.enabled'" + "reason" : "@ConditionalOnBean (types: org.springframework.boot.actuate.audit.AuditEventRepository; SearchStrategy: all) did not find any beans of type org.springframework.boot.actuate.audit.AuditEventRepository" }, - "org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnBooleanProperty (spring.application.admin.enabled=true) did not find property 'spring.application.admin.enabled'" + "reason" : "@ConditionalOnAvailableEndpoint not exposed" }, - "org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.rabbitmq.client.Channel'" + "reason" : "@ConditionalOnAvailableEndpoint not exposed" }, - "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.context.ShutdownEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint the configured access for endpoint 'shutdown' is NONE" + }, + "org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration#endpointCachingOperationInvokerAdvisor" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration#endpointOperationParameterMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration#propertiesEndpointAccessResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration#jackson2EndpointJsonMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration#endpointJsonMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.aspectj.weaver.Advice'" + "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" }, - "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : { - "outcome" : "unconditional" + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#controllerEndpointDiscoverer" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration#applicationAvailability" : { + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#endpointMediaTypes" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#pathMappedEndpoints" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#webEndpointDiscoverer" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration#servletEndpointDiscoverer" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#buildInfoContributor" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.batch.core.launch.JobLauncher'" + "reason" : "@ConditionalOnSingleCandidate (types: org.springframework.boot.info.BuildProperties; SearchStrategy: all) did not find any beans" }, - "org.springframework.boot.autoconfigure.cache.Cache2kCacheConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#envInfoContributor" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.cache2k.Cache2kBuilder'" + "reason" : "@ConditionalOnEnabledInfoContributor management.info.env.enabled is not true" }, - "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#gitInfoContributor" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnBean (types: org.springframework.cache.interceptor.CacheAspectSupport; SearchStrategy: all) did not find any beans of type org.springframework.cache.interceptor.CacheAspectSupport" + "reason" : "@ConditionalOnSingleCandidate (types: org.springframework.boot.info.GitProperties; SearchStrategy: all) did not find any beans" }, - "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration$CacheManagerEntityManagerFactoryDependsOnPostProcessor" : { + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#javaInfoContributor" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean'" + "reason" : "@ConditionalOnEnabledInfoContributor management.info.java.enabled is not true" }, - "org.springframework.boot.autoconfigure.cache.CaffeineCacheConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#osInfoContributor" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.github.benmanes.caffeine.cache.Caffeine'" + "reason" : "@ConditionalOnEnabledInfoContributor management.info.os.enabled is not true" }, - "org.springframework.boot.autoconfigure.cache.CouchbaseCacheConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#processInfoContributor" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.couchbase.client.java.Cluster'" + "reason" : "@ConditionalOnEnabledInfoContributor management.info.process.enabled is not true" }, - "org.springframework.boot.autoconfigure.cache.GenericCacheConfiguration" : { - "outcome" : "matched" + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#sslInfo" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.ssl.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#sslInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.ssl.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.logging.LoggersEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint the configured access for endpoint 'heapdump' is NONE" }, - "org.springframework.boot.autoconfigure.cache.HazelcastCacheConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.hazelcast.core.HazelcastInstance'" + "reason" : "@ConditionalOnAvailableEndpoint not exposed" }, - "org.springframework.boot.autoconfigure.cache.InfinispanCacheConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.sbom.SbomEndpointAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.infinispan.spring.embedded.provider.SpringEmbeddedCacheManager'" + "reason" : "@ConditionalOnAvailableEndpoint not exposed" }, - "org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'javax.cache.Caching'" + "reason" : "@ConditionalOnAvailableEndpoint not exposed" }, - "org.springframework.boot.autoconfigure.cache.NoOpCacheConfiguration" : { + "org.springframework.boot.actuate.autoconfigure.startup.StartupEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$DifferentManagementContextConfiguration" : { + "outcome" : "notMatched", + "reason" : "Management Port actual port type (SAME) did not match required type (DIFFERENT)" + }, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration" : { + "org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.redis.connection.RedisConnectionFactory'" + "reason" : "@ConditionalOnBooleanProperty (spring.application.admin.enabled=true) did not find property 'spring.application.admin.enabled'" }, - "org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration" : { + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration" : { + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$JdkDynamicAutoProxyConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.datastax.oss.driver.api.core.CqlSession'" + "reason" : "@ConditionalOnBooleanProperty (spring.aop.proxy-target-class=false) did not find property 'spring.aop.proxy-target-class'" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingClass found unwanted class 'org.aspectj.weaver.Advice'" + }, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration#applicationAvailability" : { + "outcome" : "matched" }, "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" : { "outcome" : "unconditional" @@ -1015,770 +2100,1006 @@ "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration#propertySourcesPlaceholderConfigurer" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration" : { + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration#buildProperties" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.couchbase.client.java.Cluster'" + "reason" : "@ConditionalOnResource did not find resource '${spring.info.build.location:classpath:META-INF/build-info.properties}'" }, - "org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration" : { + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration#gitProperties" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor'" + "reason" : "GitResource did not find git info at classpath:git.properties" }, - "org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration" : { + "org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.datastax.oss.driver.api.core.CqlSession'" + "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" }, - "org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveDataAutoConfiguration" : { + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration#sslBundleRegistry" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerWrapperConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.scheduling.annotation.AsyncConfigurer; SearchStrategy: all) did not find any beans of type org.springframework.scheduling.annotation.AsyncConfigurer" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration#simpleAsyncTaskExecutorBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration#simpleAsyncTaskExecutorBuilderVirtualThreads" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.datastax.oss.driver.api.core.CqlSession'" + "reason" : "@ConditionalOnMissingBean (types: org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder; SearchStrategy: all) found beans of type 'org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder' simpleAsyncTaskExecutorBuilder" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration#applicationTaskExecutor" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveRepositoriesAutoConfiguration" : { + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration#applicationTaskExecutorVirtualThreads" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.cassandra.ReactiveSession'" + "reason" : "@ConditionalOnThreading did not find VIRTUAL" }, - "org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration" : { + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorContextPropagationConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.datastax.oss.driver.api.core.CqlSession'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.context.ContextSnapshot'" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration#threadPoolTaskExecutorBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration#scheduledBeanLazyInitializationExcludeFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (names: org.springframework.scheduling.config.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.scheduling.config.internalScheduledAnnotationProcessor" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration#simpleAsyncTaskSchedulerBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration#simpleAsyncTaskSchedulerBuilderVirtualThreads" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder; SearchStrategy: all) found beans of type 'org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder' simpleAsyncTaskSchedulerBuilder" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (names: org.springframework.scheduling.config.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.scheduling.config.internalScheduledAnnotationProcessor" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration#threadPoolTaskSchedulerBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration#metricsRepositoryMethodInvocationListener" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration#repositoryTagsProvider" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration#pageableCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration#sortCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration#springDataWebSettings" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration#entityManagerFactoryBootstrapExecutorCustomizer" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.data.jpa.repositories.bootstrap-mode=deferred) did not find property 'spring.data.jpa.repositories.bootstrap-mode'" + }, + "org.springframework.boot.h2console.autoconfigure.H2ConsoleAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.h2.console.enabled=true) did not find property 'spring.h2.console.enabled'" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration#livenessStateHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration#readinessStateHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthEndpoint" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthEndpointGroupMembershipValidator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthEndpointGroups" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthHttpCodeStatusMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthStatusAggregator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointReactiveWebExtensionConfiguration" : { + "outcome" : "notMatched", + "reason" : "did not find reactive web application classes" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration#healthEndpointWebExtension" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration#livenessStateHealthIndicator" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.health.livenessstate.enabled=true) did not find property 'management.health.livenessstate.enabled'" + }, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration#readinessStateHealthIndicator" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.health.readinessstate.enabled=true) did not find property 'management.health.readinessstate.enabled'" + }, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration#diskSpaceHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration#sslHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration#sslInfo" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration#pingHealthContributor" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration#healthContributorRegistry" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration$ReactiveHealthContributorRegistryConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'reactor.core.publisher.Flux'" + }, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.hibernate.autoconfigure.metrics.HibernateMetricsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.hibernate.orm.micrometer.HibernateMetrics'" + }, + "org.springframework.boot.http.converter.autoconfigure.GsonHttpMessageConvertersConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'com.google.gson.Gson'" + }, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration#stringHttpMessageConvertersCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration" : { + "outcome" : "notMatched", + "reason" : "AnyNestedCondition 0 matched 2 did not; NestedCondition on Jackson2HttpMessageConvertersConfiguration.PreferJackson2OrJacksonUnavailableCondition.JacksonUnavailable @ConditionalOnMissingBean (types: org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConvertersCustomizer; SearchStrategy: all) found beans of type 'org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConvertersCustomizer' jacksonJsonHttpMessageConvertersCustomizer; NestedCondition on Jackson2HttpMessageConvertersConfiguration.PreferJackson2OrJacksonUnavailableCondition.Jackson2Preferred @ConditionalOnProperty (spring.http.converters.preferred-json-mapper=jackson2) did not find property 'spring.http.converters.preferred-json-mapper'" + }, + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration$MappingJackson2XmlHttpMessageConverterConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'com.fasterxml.jackson.dataformat.xml.XmlMapper'" + }, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration#jacksonJsonHttpMessageConvertersCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonXmlHttpMessageConverterConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'tools.jackson.dataformat.xml.XmlMapper'" + }, + "org.springframework.boot.http.converter.autoconfigure.JsonbHttpMessageConvertersConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'jakarta.json.bind.Jsonb'" + }, + "org.springframework.boot.http.converter.autoconfigure.KotlinSerializationHttpMessageConvertersConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required classes 'kotlinx.serialization.Serializable', 'kotlinx.serialization.json.Json'" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration#jacksonJsonMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration#jsonFactory" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration#jsonMapperBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$CborConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'tools.jackson.dataformat.cbor.CBORMapper'" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$XmlConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'tools.jackson.dataformat.xml.XmlMapper'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$EmbeddedDatabaseConfiguration" : { + "outcome" : "notMatched", + "reason" : "EmbeddedDataSource spring.datasource.url is set" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration#jdbcConnectionDetails" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceCheckpointRestoreConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.crac.Resource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Dbcp2" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.commons.dbcp2.BasicDataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Generic" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.datasource.type) did not find property 'spring.datasource.type'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$OracleUcp" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required classes 'oracle.ucp.jdbc.PoolDataSourceImpl', 'oracle.jdbc.OracleConnection'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Tomcat" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.tomcat.jdbc.pool.DataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceJmxConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$CommonsDbcp2PoolDataSourceMetadataProviderConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.commons.dbcp2.BasicDataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$OracleUcpPoolDataSourceMetadataProviderConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required classes 'oracle.ucp.jdbc.PoolDataSource', 'oracle.jdbc.OracleConnection'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$TomcatDataSourcePoolMetadataProviderConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.tomcat.jdbc.pool.DataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.couchbase.client.java.Bucket'" + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveDataAutoConfiguration" : { + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration#transactionManager" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.couchbase.client.java.Cluster'" + "reason" : "@ConditionalOnMissingBean (types: org.springframework.transaction.TransactionManager; SearchStrategy: all) found beans of type 'org.springframework.transaction.TransactionManager' transactionManager" }, - "org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveRepositoriesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.couchbase.client.java.Cluster'" + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.couchbase.client.java.Bucket'" + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate'" + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration" : { + "org.springframework.boot.jdbc.autoconfigure.JndiDataSourceAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.elasticsearch.repository.ElasticsearchRepository'" + "reason" : "@ConditionalOnProperty (spring.datasource.jndi-name) did not find property 'spring.datasource.jndi-name'" }, - "org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRepositoriesAutoConfiguration" : { + "org.springframework.boot.jdbc.autoconfigure.LazyConnectionDataSourceConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchClient'" + "reason" : "@ConditionalOnProperty (spring.datasource.connection-fetch=lazy) did not find property 'spring.datasource.connection-fetch'" }, - "org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration'" + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration" : { + "org.springframework.boot.jdbc.autoconfigure.XADataSourceAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.jpa.repository.JpaRepository'" + "reason" : "@ConditionalOnBean (types: org.springframework.boot.jdbc.XADataSourceWrapper; SearchStrategy: all) did not find any beans of type org.springframework.boot.jdbc.XADataSourceWrapper" }, - "org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.ldap.repository.LdapRepository'" + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.mongodb.client.MongoClient'" + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration#dbHealthContributor" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.mongo.MongoReactiveDataAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.mongodb.reactivestreams.client.MongoClient'" + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.mongo.MongoReactiveRepositoriesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.mongodb.reactivestreams.client.MongoClient'" + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.mongodb.client.MongoClient'" + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.neo4j.driver.Driver'" + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#entityManagerFactory" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveDataAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.neo4j.driver.Driver'" + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#entityManagerFactoryBuilder" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveRepositoriesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.neo4j.driver.Driver'" + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#jpaVendorAdapter" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.neo4j.driver.Driver'" + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#transactionManager" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.r2dbc.core.R2dbcEntityTemplate'" + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'io.r2dbc.spi.ConnectionFactory'" + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.redis.core.RedisOperations'" + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration#persistenceManagedTypes" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.redis.connection.ReactiveRedisConnectionFactory'" + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.redis.repository.configuration.EnableRedisRepositories'" + "reason" : "NoneNestedConditions 1 matched 1 did not; NestedCondition on CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.SingleInjectableMeterRegistry @ConditionalOnSingleCandidate (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found a single bean 'simpleMeterRegistry'; NestedCondition on CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.NoMeterRegistryCondition @ConditionalOnMissingBean (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found beans of type 'io.micrometer.core.instrument.MeterRegistry' simpleMeterRegistry" }, - "org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAspectsAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration'" + "reason" : "@ConditionalOnBooleanProperty (management.observations.annotations.enabled=true) did not find property 'management.observations.annotations.enabled'" }, - "org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.data.web.PageableHandlerMethodArgumentResolver'" + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchClientAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'co.elastic.clients.elasticsearch.ElasticsearchClient'" + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration#micrometerClock" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsEndpointAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.elasticsearch.client.RestClientBuilder'" + "reason" : "@ConditionalOnAvailableEndpoint not exposed" }, - "org.springframework.boot.autoconfigure.elasticsearch.ReactiveElasticsearchClientAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.NoOpMeterRegistryConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'co.elastic.clients.transport.ElasticsearchTransport'" + "reason" : "@ConditionalOnMissingBean (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found beans of type 'io.micrometer.core.instrument.MeterRegistry' simpleMeterRegistry" }, - "org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.appoptics.AppOpticsMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.flywaydb.core.Flyway'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.appoptics.AppOpticsMeterRegistry'" }, - "org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.atlas.AtlasMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'freemarker.template.Configuration'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.atlas.AtlasMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.GraphQlAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.datadog.DatadogMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'graphql.GraphQL'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.datadog.DatadogMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.data.GraphQlQueryByExampleAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.dynatrace.DynatraceMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'graphql.GraphQL'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.dynatrace.DynatraceMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.data.GraphQlQuerydslAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.elastic.ElasticMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.querydsl.core.Query'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.elastic.ElasticMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.data.GraphQlReactiveQueryByExampleAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.ganglia.GangliaMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'graphql.GraphQL'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.ganglia.GangliaMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.data.GraphQlReactiveQuerydslAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.graphite.GraphiteMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.querydsl.core.Query'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.graphite.GraphiteMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.reactive.GraphQlWebFluxAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.humio.HumioMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'graphql.GraphQL'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.humio.HumioMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.rsocket.GraphQlRSocketAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.influx.InfluxMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'graphql.GraphQL'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.influx.InfluxMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.rsocket.RSocketGraphQlClientAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.jmx.JmxMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'graphql.GraphQL'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.jmx.JmxMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.security.GraphQlWebFluxSecurityAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.kairos.KairosMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'graphql.GraphQL'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.kairos.KairosMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.security.GraphQlWebMvcSecurityAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.newrelic.NewRelicMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'graphql.GraphQL'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.newrelic.NewRelicMeterRegistry'" }, - "org.springframework.boot.autoconfigure.graphql.servlet.GraphQlWebMvcAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.otlp.OtlpMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'graphql.GraphQL'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.registry.otlp.OtlpMeterRegistry'" }, - "org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.prometheus.PrometheusMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'groovy.text.markup.MarkupTemplateEngine'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.prometheusmetrics.PrometheusMeterRegistry'" }, - "org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.google.gson.Gson'" + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.h2.server.web.JakartaWebServlet'" + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration#simpleConfig" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.stackdriver.StackdriverMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.hateoas.EntityModel'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.stackdriver.StackdriverMeterRegistry'" }, - "org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.export.statsd.StatsdMetricsExportAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.hazelcast.core.HazelcastInstance'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.statsd.StatsdMeterRegistry'" }, - "org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.hazelcast.core.HazelcastInstance'" + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.google.gson.Gson'" + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#classLoaderMetrics" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmCompilationMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration#messageConverters" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmGcMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmHeapPressureMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration#stringHttpMessageConverter" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmInfoMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmMemoryMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration#mappingJackson2HttpMessageConverter" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmThreadMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2XmlHttpMessageConverterConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration$VirtualThreadMetricsConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.fasterxml.jackson.dataformat.xml.XmlMapper'" + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.java21.instrument.binder.jdk.VirtualThreadMetrics'" }, - "org.springframework.boot.autoconfigure.http.JsonbHttpMessageConvertersConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.log4j2.Log4J2MetricsAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.json.bind.Jsonb'" + "reason" : "@ConditionalOnClass did not find required class 'org.apache.logging.log4j.core.LoggerContext'" }, - "org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration#clientHttpRequestFactoryBuilder" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration#logbackMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration#clientHttpRequestFactorySettings" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration#clientHttpConnector" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration#startupTimeMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration#clientHttpConnectorBuilder" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration#clientHttpConnectorSettings" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#diskSpaceMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration$ReactorNetty" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#fileDescriptorMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#processorMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#uptimeMetrics" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration$JacksonCodecConfiguration#jacksonCodecCustomizer" : { + "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : { - "outcome" : "unconditional" - }, - "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration#buildProperties" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnResource did not find resource '${spring.info.build.location:classpath:META-INF/build-info.properties}'" - }, - "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration#gitProperties" : { - "outcome" : "notMatched", - "reason" : "GitResource did not find git info at classpath:git.properties" - }, - "org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.integration.config.EnableIntegration'" - }, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration" : { + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration" : { + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration#observationRegistry" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration" : { + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration#spelValueExpressionResolver" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration#jacksonObjectMapperBuilder" : { - "outcome" : "matched" + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration$ObservedAspectConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.observations.annotations.enabled=true) did not find property 'management.observations.annotations.enabled'" }, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration" : { + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration#jacksonObjectMapper" : { + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration" : { + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration#persistenceExceptionTranslationPostProcessor" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration#parameterNamesModule" : { + "org.springframework.boot.security.autoconfigure.ReactiveUserDetailsServiceAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "AnyNestedCondition 0 matched 2 did not; NestedCondition on ReactiveUserDetailsServiceAutoConfiguration.RSocketEnabledOrReactiveWebApplication.ReactiveWebApplicationCondition did not find reactive web application classes; NestedCondition on ReactiveUserDetailsServiceAutoConfiguration.RSocketEnabledOrReactiveWebApplication.RSocketSecurityEnabledCondition @ConditionalOnBean (types: org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler; SearchStrategy: all) did not find any beans of type org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler" + }, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType'" + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration#authenticationEventPublisher" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration" : { + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration$SecurityDataConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.jdbc.core.JdbcTemplate'" + "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.data.repository.query.SecurityEvaluationContextExtension'" }, - "org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnSingleCandidate did not find required type 'org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate'" + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration" : { + "org.springframework.boot.security.autoconfigure.actuate.web.reactive.ReactiveManagementWebSecurityAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.jdbc.core.JdbcTemplate'" + "reason" : "@ConditionalOnWebApplication did not find reactive web application classes" }, - "org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration" : { + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.ManagementWebSecurityAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType'" + "reason" : "AllNestedConditions 1 matched 1 did not; NestedCondition on DefaultWebSecurityCondition.Beans @ConditionalOnMissingBean (types: org.springframework.security.web.SecurityFilterChain; SearchStrategy: all) found beans of type 'org.springframework.security.web.SecurityFilterChain' demoChain; NestedCondition on DefaultWebSecurityCondition.Classes @ConditionalOnClass found required classes 'org.springframework.security.web.SecurityFilterChain', 'org.springframework.security.config.annotation.web.builders.HttpSecurity'" }, - "org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.transaction.TransactionManager'" + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration" : { + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$JerseyRequestMatcherConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.servlet.ServletRegistration'" + "reason" : "@ConditionalOnClass did not find required class 'org.glassfish.jersey.server.ResourceConfig'" }, - "org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.jms.Message'" + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.jms.core.JmsTemplate'" + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration#requestMatcherProvider" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration" : { + "org.springframework.boot.security.autoconfigure.rsocket.RSocketSecurityAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.jms.ConnectionFactory'" + "reason" : "@ConditionalOnClass did not find required class 'org.springframework.boot.rsocket.server.RSocketServerCustomizer'" }, - "org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration" : { + "org.springframework.boot.security.autoconfigure.web.reactive.ReactiveWebSecurityAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.jms.ConnectionFactory'" + "reason" : "@ConditionalOnClass did not find required class 'reactor.core.publisher.Flux'" }, - "org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.jooq.DSLContext'" + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration#securityFilterChainRegistration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.json.bind.Jsonb'" + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.kafka.core.KafkaTemplate'" + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.ldap.core.ContextSource'" + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.unboundid.ldap.listener.InMemoryDirectoryServer'" + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration#pathPatternRequestMatcherBuilder" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration" : { + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$SecurityFilterChainConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'liquibase.change.DatabaseChange'" + "reason" : "AllNestedConditions 1 matched 1 did not; NestedCondition on DefaultWebSecurityCondition.Beans @ConditionalOnMissingBean (types: org.springframework.security.web.SecurityFilterChain; SearchStrategy: all) found beans of type 'org.springframework.security.web.SecurityFilterChain' demoChain; NestedCondition on DefaultWebSecurityCondition.Classes @ConditionalOnClass found required classes 'org.springframework.security.web.SecurityFilterChain', 'org.springframework.security.config.annotation.web.builders.HttpSecurity'" }, - "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.mail.internet.MimeMessage'" + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnSingleCandidate did not find required type 'org.springframework.mail.javamail.JavaMailSenderImpl'" + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration#characterEncodingFilter" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.mongodb.client.MongoClient'" + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.mongodb.reactivestreams.client.MongoClient'" + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration#multipartConfigElement" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.samskivert.mustache.Mustache'" + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration#multipartResolver" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.neo4j.driver.Driver'" + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration$ApplicationContextFilterConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.persistence.EntityManager'" + "reason" : "@ConditionalOnBooleanProperty (management.server.add-application-context-header=true) did not find property 'management.server.add-application-context-header'" }, - "org.springframework.boot.autoconfigure.pulsar.PulsarAutoConfiguration" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.exchanges.ServletHttpExchangesAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.apache.pulsar.client.api.PulsarClient'" + "reason" : "@ConditionalOnBean (types: org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository; SearchStrategy: all) did not find any beans of type org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository" }, - "org.springframework.boot.autoconfigure.pulsar.PulsarReactiveAutoConfiguration" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.mappings.ServletMappingsAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.apache.pulsar.client.api.PulsarClient'" + "reason" : "@ConditionalOnAvailableEndpoint not exposed" }, - "org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.quartz.Scheduler'" + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration#templateEngine" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration" : { + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$ReactiveTemplateEngineConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'io.r2dbc.spi.ConnectionFactory'" + "reason" : "did not find reactive web application classes" }, - "org.springframework.boot.autoconfigure.r2dbc.R2dbcProxyAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'io.r2dbc.proxy.ProxyConnectionFactory'" + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.r2dbc.R2dbcTransactionManagerAutoConfiguration" : { + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DataAttributeDialectConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.r2dbc.connection.R2dbcTransactionManager'" + "reason" : "@ConditionalOnClass did not find required class 'com.github.mxab.thymeleaf.extras.dataattribute.dialect.DataAttributeDialect'" }, - "org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration" : { + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations$ReactorResourceFactoryConfiguration#reactorResourceFactory" : { + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.rsocket.RSocketMessagingAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'io.rsocket.RSocket'" - }, - "org.springframework.boot.autoconfigure.rsocket.RSocketRequesterAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'io.rsocket.RSocket'" - }, - "org.springframework.boot.autoconfigure.rsocket.RSocketServerAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'io.rsocket.core.RSocketServer'" + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration#securityDialect" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.rsocket.RSocketStrategiesAutoConfiguration" : { + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebFluxConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'io.rsocket.RSocket'" + "reason" : "did not find reactive web application classes" }, - "org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientAutoConfiguration" : { + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebLayoutConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.oauth2.client.registration.ClientRegistration'" + "reason" : "@ConditionalOnClass did not find required class 'nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect'" }, - "org.springframework.boot.autoconfigure.security.oauth2.client.reactive.ReactiveOAuth2ClientAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.oauth2.client.registration.ClientRegistration'" + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.security.oauth2.client.reactive.ReactiveOAuth2ClientWebSecurityAutoConfiguration" : { + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration#resourceUrlEncodingFilter" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity'" + "reason" : "@ConditionalOnEnabledResourceChain did not find class org.webjars.WebJarVersionLocator" }, - "org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientWebSecurityAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.config.annotation.web.configuration.EnableWebSecurity'" + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.security.oauth2.resource.reactive.ReactiveOAuth2ResourceServerAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity'" + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration#thymeleafViewResolver" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken'" + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.security.oauth2.server.servlet.OAuth2AuthorizationServerAutoConfiguration" : { + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration#tomcatVirtualThreadsProtocolHandlerCustomizer" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.oauth2.server.authorization.OAuth2Authorization'" + "reason" : "@ConditionalOnThreading did not find VIRTUAL" }, - "org.springframework.boot.autoconfigure.security.oauth2.server.servlet.OAuth2AuthorizationServerJwtAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.nimbusds.jose.jwk.source.JWKSource'" + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.security.reactive.ReactiveSecurityAutoConfiguration" : { + "org.springframework.boot.tomcat.autoconfigure.actuate.web.server.TomcatReactiveManagementContextAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity'" + "reason" : "@ConditionalOnWebApplication did not find reactive web application classes" }, - "org.springframework.boot.autoconfigure.security.reactive.ReactiveUserDetailsServiceAutoConfiguration" : { + "org.springframework.boot.tomcat.autoconfigure.actuate.web.server.TomcatServletManagementContextAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.authentication.ReactiveAuthenticationManager'" + "reason" : "Management Port actual port type (SAME) did not match required type (DIFFERENT)" }, - "org.springframework.boot.autoconfigure.security.rsocket.RSocketSecurityAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.rsocket.core.SecuritySocketAcceptorInterceptor'" + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.security.saml2.Saml2RelyingPartyAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistrationRepository'" + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration#tomcatMetricsBinder" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration" : { + "org.springframework.boot.tomcat.autoconfigure.reactive.TomcatReactiveWebServerAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.authentication.DefaultAuthenticationEventPublisher'" + "reason" : "@ConditionalOnWebApplication did not find reactive web application classes" }, - "org.springframework.boot.autoconfigure.security.servlet.SecurityFilterAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.config.http.SessionCreationPolicy'" + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration" : { + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration#tomcatForwardedHeaderFilterCustomizer" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.authentication.AuthenticationManager'" + "reason" : "@ConditionalOnProperty (server.forward-headers-strategy=framework) did not find property 'server.forward-headers-strategy'" }, - "org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'com.sendgrid.SendGrid'" + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration#tomcatServletWebServerFactory" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.session.SessionAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.session.Session'" + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.sql.init.DataSourceInitializationConfiguration" : { + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration#transactionalOperator" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.jdbc.datasource.init.DatabasePopulator'" + "reason" : "@ConditionalOnSingleCandidate (types: org.springframework.transaction.ReactiveTransactionManager; SearchStrategy: all) did not find any beans" }, - "org.springframework.boot.autoconfigure.sql.init.R2dbcInitializationConfiguration" : { + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$AspectJTransactionManagementConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required classes 'io.r2dbc.spi.ConnectionFactory', 'org.springframework.r2dbc.connection.init.DatabasePopulator'" + "reason" : "@ConditionalOnBean (types: org.springframework.transaction.aspectj.AbstractTransactionAspect; SearchStrategy: all) did not find any beans of type org.springframework.transaction.aspectj.AbstractTransactionAspect" }, - "org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration" : { + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : { - "outcome" : "unconditional" - }, - "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration#sslBundleRegistry" : { + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : { + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$JdkDynamicAutoProxyConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.aop.proxy-target-class=false) did not find property 'spring.aop.proxy-target-class'" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : { + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration#transactionTemplate" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration#applicationTaskExecutorAsyncConfigurer" : { + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration#simpleAsyncTaskExecutorBuilder" : { + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration#platformTransactionManagerCustomizers" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration#simpleAsyncTaskExecutorBuilderVirtualThreads" : { + "org.springframework.boot.transaction.jta.autoconfigure.JndiJtaConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnMissingBean (types: org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder; SearchStrategy: all) found beans of type 'org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder' simpleAsyncTaskExecutorBuilder" + "reason" : "@ConditionalOnJndi JNDI environment is not available" }, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : { + "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration#applicationTaskExecutor" : { + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration#applicationTaskExecutorVirtualThreads" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnThreading did not find VIRTUAL" - }, - "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration#threadPoolTaskExecutorBuilder" : { + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration#defaultValidator" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : { + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration#methodValidationPostProcessor" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration#scheduledBeanLazyInitializationExcludeFilter" : { + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration#forwardedHeaderFilter" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnBean (names: org.springframework.context.annotation.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.context.annotation.internalScheduledAnnotationProcessor" + "reason" : "@ConditionalOnProperty (server.forward-headers-strategy=framework) did not find property 'server.forward-headers-strategy'" }, - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration#simpleAsyncTaskSchedulerBuilder" : { + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration#simpleAsyncTaskSchedulerBuilderVirtualThreads" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnMissingBean (types: org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder; SearchStrategy: all) found beans of type 'org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder' simpleAsyncTaskSchedulerBuilder" - }, - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnBean (names: org.springframework.context.annotation.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.context.annotation.internalScheduledAnnotationProcessor" - }, - "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration#threadPoolTaskSchedulerBuilder" : { + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.thymeleaf.spring6.SpringTemplateEngine'" - }, - "org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.transaction.PlatformTransactionManager'" - }, - "org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.transaction.PlatformTransactionManager'" - }, - "org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.transaction.Transaction'" - }, - "org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration#multipartResolver" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.validation.executable.ExecutableValidator'" + "reason" : "@ConditionalOnBean (types: org.springframework.web.multipart.MultipartResolver; SearchStrategy: all) did not find any beans of type org.springframework.web.multipart.MultipartResolver" }, - "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration#httpMessageConvertersRestClientCustomizer" : { + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration#dispatcherServletRegistration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration#restClientBuilder" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration#restClientBuilderConfigurer" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration#formContentFilter" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration#restClientSsl" : { - "outcome" : "matched" + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration#hiddenHttpMethodFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.mvc.hiddenmethod.filter.enabled=true) did not find property 'spring.mvc.hiddenmethod.filter.enabled'" }, - "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration#flashMapManager" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration#restTemplateBuilder" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration#localeResolver" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnWebApplication (required) not a servlet web application and not a reactive web application" + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration#viewNameTranslator" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$ProblemDetailsErrorHandlingConfiguration" : { "outcome" : "notMatched", - "reason" : "not a reactive web application" + "reason" : "@ConditionalOnBooleanProperty (spring.mvc.problemdetails.enabled=true) did not find property 'spring.mvc.problemdetails.enabled'" }, - "org.springframework.boot.autoconfigure.web.reactive.ReactiveMultipartAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$ResourceChainCustomizerConfiguration" : { "outcome" : "notMatched", - "reason" : "not a reactive web application" + "reason" : "@ConditionalOnEnabledResourceChain did not find class org.webjars.WebJarVersionLocator" }, - "org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#beanNameViewResolver" : { "outcome" : "notMatched", - "reason" : "not a reactive web application" + "reason" : "@ConditionalOnMissingBean (types: org.springframework.web.servlet.view.BeanNameViewResolver; SearchStrategy: all) found beans of type 'org.springframework.web.servlet.view.BeanNameViewResolver' beanNameViewResolver" }, - "org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "not a reactive web application" + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#defaultViewResolver" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.WebSessionIdResolverAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "not a reactive web application" + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#requestContextFilter" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "not a reactive web application" + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#viewResolver" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration$ReactorNetty" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration#webMvcObservationFilter" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration#webClientBuilder" : { + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration#webClientHttpConnectorCustomizer" : { + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration#webClientSsl" : { + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#controllerEndpointHandlerMapping" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#endpointJackson2ObjectMapperWebMvcConfigurer" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration$WebClientCodecsConfiguration#exchangeStrategiesCustomizer" : { + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#endpointJsonMapperWebMvcConfigurer" : { "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.web.servlet.DispatcherServlet'" + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#webEndpointServletHandlerMapping" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.web.filter.CharacterEncodingFilter'" + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration#managementHealthEndpointWebMvcHandlerMapping" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.servlet.MultipartConfigElement'" + "reason" : "Management Port actual port type (SAME) did not match required type (DIFFERENT)" }, - "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration" : { + "org.springframework.boot.webmvc.autoconfigure.actuate.web.mappings.WebMvcMappingsAutoConfiguration" : { "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.servlet.ServletRequest'" + "reason" : "@ConditionalOnAvailableEndpoint not exposed" }, - "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.servlet.Servlet'" + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.servlet.Servlet'" + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration#basicErrorController" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.ws.transport.http.MessageDispatcherServlet'" + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration#errorAttributes" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.webservices.client.WebServiceTemplateAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.oxm.Marshaller'" + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration#conventionErrorViewResolver" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.websocket.reactive.WebSocketReactiveAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.servlet.Servlet'" + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketMessagingAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'org.springframework.web.socket.config.annotation.DelegatingWebSocketMessageBrokerConfiguration'" + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration#beanNameViewResolver" : { + "outcome" : "matched" }, - "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration" : { - "outcome" : "notMatched", - "reason" : "@ConditionalOnClass did not find required class 'jakarta.servlet.Servlet'" + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration#defaultErrorView" : { + "outcome" : "matched" } }, - "trendHistory" : [ { - "timestamp" : 1787460726622, - "totalStartupMs" : 102, - "slowBeanCount" : 0 - } ], "gates" : { "baselineConfigured" : true, - "mode" : "write", + "mode" : "diff", "armed" : [ ], "config" : { "startupTimeAbsoluteThresholdMs" : 500, "startupTimeRelativePercent" : 20.0, "slowBeanThresholdMs" : 100, "slowBeanMarginMs" : 20 + }, + "baseline" : "wiredoctor-baseline.json", + "failed" : [ ], + "startupTime" : { + "baselineMs" : 7210, + "currentMs" : 7067, + "deltaMs" : -143, + "percentChange" : -1.9833564493758666 } - } + }, + "trendHistory" : [ { + "timestamp" : 1787595868889, + "totalStartupMs" : 6747, + "slowBeanCount" : 13, + "beanCount" : 429 + }, { + "timestamp" : 1787595880167, + "totalStartupMs" : 7100, + "slowBeanCount" : 15, + "beanCount" : 429 + }, { + "timestamp" : 1787595891310, + "totalStartupMs" : 7210, + "slowBeanCount" : 14, + "beanCount" : 429 + } ] +}; +const ghostReport = { + "disclaimer" : "'untouched' means no proxied method was invoked during THIS run — NOT that the bean is unused. Confidence scales with run duration and traffic realism. Framework beans are out of scope; untrackable beans could not be wrapped (reason given).", + "trackedCount" : 17, + "touchedCount" : 10, + "untouchedCount" : 7, + "untouched" : [ "archivedReportExporter", "catalogCacheWarmer", "defaultTemplateResolver", "legacyExportService", "legacyImportService", "securityDialect", "templateEngine" ], + "touched" : [ "auditService", "dataSource", "inventoryService", "jacksonJsonMapper", "jsonFactory", "notificationService", "orderController", "orderService", "pricingService", "thymeleafViewResolver" ], + "untrackableCount" : 5, + "untrackable" : { + "asyncMailer" : "already-proxied", + "entityManagerFactory" : "final-class", + "jpaSharedEM_entityManagerFactory" : "final-class", + "jsonMapperBuilder" : "non-singleton", + "orderRepository" : "already-proxied" + }, + "frameworkSkipped" : 391 }; -const ghostReport = null; /* ───────── helpers ───────── */ const $ = s => document.querySelector(s); const esc = s => String(s).replace(/[&<>"']/g, c => ({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c])); +// Bean names only: Spring's & prefix means "the FactoryBean, not its product". +// Spelled out here; the raw name stays in the JSON. +const escBean = s => { const t = String(s); return esc(t.startsWith('&') ? t.slice(1) + ' (FactoryBean)' : t); }; +/* v1.1.3 — bean-name lists that used to be counts only (fan-in/out drill-down, + orphans, proxies). Capped: a framework bean can have 200 dependents. */ +const NAME_LIST_CAP = 30; +function nameList(names) { + const shown = names.slice(0, NAME_LIST_CAP).map(n => escBean(n)).join(', '); + const rest = names.length - NAME_LIST_CAP; + return shown + (rest > 0 ? `
… and ${fmt(rest)} more — full list in wiredoctor-report.json` : ''); +} const fmt = n => n.toLocaleString('en-US'); +/* Package-prefix heuristic, shared by the graph's Framework filter and the + coupling quadrant. Only catches beans registered under their FQCN — a + camelCase framework bean reads as user-defined. Declared here so both + readers see it initialised. */ +const FRAMEWORK_PREFIX = /^(org\.springframework|org\.apache|com\.sun|java\.|javax\.|jakarta\.|io\.netty|com\.fasterxml|io\.micrometer)/; +const isFw = b => FRAMEWORK_PREFIX.test(b); const deps = reportData.dependencies; const cycles = deps.cycles || []; const cycleBeans = new Set(cycles.flat()); const proxyBeans = new Set([...(reportData.proxies.cglibBeans||[]), ...(reportData.proxies.jdkBeans||[])]); +// Counts above are what could be inspected; this is what could not. Never round it away. +const proxySkipped = reportData.proxies.notInstantiatedSkipped || 0; const orphans = new Set(deps.orphanBeans || []); const ghosts = new Set((reportData.ghostCandidates && reportData.ghostCandidates.beans) || []); const fanIn = (reportData.smells && reportData.smells.fanIn) || {}; @@ -1826,6 +3147,7 @@ const TABS = [ { id:'overview', icon:'◈', label:'Overview' }, { id:'graph', icon:'⬡', label:'Graph', full:true }, + { id:'cycles', icon:'⟲', label:'Cycles', count: cycles.length, hot: true }, { id:'ghosts', icon:'◍', label:'Ghosts', count: gc.count + (ghostReport ? (ghostReport.untouchedCount||0) : 0) }, { id:'smells', icon:'△', label:'Smells' }, { id:'timing', icon:'◷', label:'Timing' }, @@ -1836,7 +3158,7 @@ const b = document.createElement('button'); b.className = 'nav-item' + (i===0?' active':''); b.innerHTML = `${t.icon}${t.label}` + - (t.count ? `${t.count}` : ''); + (t.count ? `${t.count}` : ''); b.onclick = () => activate(t.id); b.dataset.tab = t.id; nav.appendChild(b); @@ -1877,8 +3199,9 @@

Overview

Total beans
${fmt(deps.totalBeans)}
Wiring edges
${fmt(deps.totalEdges)}
-
Dependency cycles
${cycles.length}
-
Proxies (CGLIB/JDK)
${reportData.proxies.cglibCount} / ${reportData.proxies.jdkCount}
+
Dependency cycles
${cycles.length}
+
Proxies (CGLIB/JDK)
${reportData.proxies.cglibCount} / ${reportData.proxies.jdkCount}
${ + proxySkipped ? `
${fmt(proxySkipped)} bean${proxySkipped>1?'s':''} not instantiated at report time — not inspected.
` : ''}
Ghost candidates
${gc.count}
Critical path
${cp.available ? fmt(cp.totalMs)+'ms' : '—'}
@@ -1914,12 +3237,63 @@

Overview

👻 Ghost candidates confidence LOW
- ${gc.count ? `${gc.beans.slice(0,8).map(b=>``).join('')}
${esc(b)}
+ ${gc.count ? `${gc.beans.slice(0,8).map(b=>``).join('')}
${escBean(b)}

Instantiated, no dependents, no known entry point — not proof of dead code.

` : '
No ghost candidates.
'}
`; +/* ───────── Cycles tab (v1.1.3) ───────── + The cycle members and the @Lazy suggestions were in wiredoctor-report.json and + the console from 0.3.0 on, and nowhere in the HTML. This is that data. */ +const lazyFixes = reportData.lazySuggestions || []; +function cycleCards() { + if (!cycles.length) { + return '
No dependency cycles — Spring resolved every bean without a circular reference.
'; + } + return cycles.map((members, i) => { + // Repeat the first bean: a list of names does not read as a cycle, a loop does. + const chain = members.concat(members[0]); + // Lowest downstream impact first — that is the recommendation, fewer beans + // move to first-request initialisation. + const fixes = lazyFixes + .filter(f => (f.breaksCycles || []).includes(i)) + .sort((a, b) => (a.downstreamImpact || 0) - (b.downstreamImpact || 0)); + const primary = fixes[0]; + const alts = fixes.slice(1); + return `
+
⟲ Cycle ${i + 1} · ${members.length} bean${members.length > 1 ? 's' : ''}
+
${chain.map(b => + `${escBean(b)}` + ).join('')}
+ ${primary ? `
+
Break it
+
Make ${escBean(primary.beanName)} @Lazy
+
breaks ${primary.breaksCycles.length} cycle${primary.breaksCycles.length > 1 ? 's' : ''} · ${primary.downstreamImpact} downstream bean${primary.downstreamImpact === 1 ? ' initialises' : 's initialise'} lazily
+ ${alts.length ? `
Also breaks it: ${alts.map(f => + `${escBean(f.beanName)} (${f.downstreamImpact} downstream)`).join(' · ')}
` : ''} +
` : `
+
No @Lazy cut suggested
+
No suggestion for this cycle — either the simulator found no safe cut, or this report predates it. Breaking it by design: extract an interface, or invert one of the dependencies.
+
`} +
`; + }).join(''); +} +$('#tab-cycles').innerHTML = ` +

Dependency Cycles

+

Circular references Spring resolved at startup, and the smallest @Lazy cut that breaks each one. @Lazy defers construction — it does not remove the coupling, the cycle stays in the design.

+ ${cycleCards()}`; +/* Delegated so bean names never have to survive an inline onclick. */ +$('#tab-cycles').addEventListener('click', e => { + const el = e.target.closest('[data-bean]'); + if (el) focusBean(el.dataset.bean); +}); +$('#tab-cycles').addEventListener('keydown', e => { + if (e.key !== 'Enter' && e.key !== ' ') return; + const el = e.target.closest('[data-bean]'); + if (el) { e.preventDefault(); focusBean(el.dataset.bean); } +}); + /* ═══════════ v1.1.0 charts — hand-rolled SVG, no chart library ═══════════ Palettes validated for the dark surface #12161f: the timing ramp is single-hue ordinal (monotone lightness, adjacent ΔL ≥ 0.06, dark end ≥ 2:1 on surface); @@ -2003,7 +3377,7 @@

Overview

${grid}${cols} instantiation time (ms) -

${fmt(vals.length)} beans measured · ${fmt(slow)} over 100ms — the slow-bean threshold. Brighter column = slower bucket.

`; +

${fmt(vals.length)} beans measured · ${fmt(slow)} at 100ms or more · slow-bean threshold ${fmt(reportData.slowBeanThreshold != null ? reportData.slowBeanThreshold : 100)}ms. Brighter column = slower bucket.

`; } function compositionDonut() { @@ -2027,12 +3401,21 @@

Overview

Framework ${fmt(fw)} · ${(fw/total*100).toFixed(0)}% -
- Orphans (heuristic)${orphans.size} -
+ ${countRow('Orphans (heuristic)', [...orphans], 'Nothing declares a dependency on these. Not the same as unused — reflective and programmatic lookups are invisible here.')} + ${countRow('Proxied (CGLIB/JDK)', [...proxyBeans], '')} `; } +function countRow(label, names, note) { + const head = `${esc(label)}`; + const body = names.length + ? `
${head}
${nameList(names)}${ + note ? `
${esc(note)}
` : ''}
` + : head; + return `
+ ${body}${fmt(names.length)} +
`; +} /* v1.1.0: critical path timeline — horizontal stacked bar */ function criticalPathTimeline() { if (!cp.available || !cp.path || !cp.path.length) return ''; @@ -2045,7 +3428,7 @@

Overview

const bg = isCycle ? 'var(--danger)' : 'var(--accent)'; const label = n.beanName.length > 28 ? n.beanName.slice(0,25)+'...' : n.beanName; return `
- ${esc(label)} + ${escBean(label)}
${n.ownMs!=null?n.ownMs+'ms':''} @@ -2059,7 +3442,7 @@

Overview

if (!list.length) return '
No user-bean hotspots.
'; const max = list[0].inDegree || 1; return `${list.slice(0,8).map(e=>` - + `).join('')}
${esc(e.beanName)}
${escBean(e.beanName)}
${e.inDegree}
`; } @@ -2071,7 +3454,7 @@

Ghost Beans

Phase 1 · Passive candidates confidence LOW
- ${gc.count ? `${gc.beans.map(b=>``).join('')}
Bean
${esc(b)}
` : '
No candidates.
'} + ${gc.count ? `${gc.beans.map(b=>``).join('')}
Bean
${escBean(b)}
` : '
No candidates.
'}
◍  ${esc(gc.disclaimer||'')}
Entry points excluded: ${gc.entryPointsExcluded ?? 0} @@ -2087,9 +3470,9 @@

Ghost Beans

Untrackable
${ghostReport.untrackableCount}
Untouched this run
- ${(ghostReport.untouched||[]).map(b=>`${ghosts.has(b)?'':''}`).join('')}
${esc(b)}also candidate
+ ${(ghostReport.untouched||[]).map(b=>`${ghosts.has(b)?'':''}`).join('')}
${escBean(b)}also candidate
Untrackable (reason)
- ${Object.entries(ghostReport.untrackable||{}).map(([b,r])=>``).join('')}
${esc(b)}${esc(r)}
+ ${Object.entries(ghostReport.untrackable||{}).map(([b,r])=>``).join('')}
${escBean(b)}${esc(r)}

${esc(ghostReport.disclaimer||'')}

` : `
Not enabled this run, or results pending: ghosts are only knowable at shutdown.

Enable with wiredoctor.ghost-tracking.enabled=true (dev/staging only — wraps beans in a thin counting proxy).
Results: wiredoctor-ghost-report.json at shutdown, or live via /actuator/wiredoctor/ghosts.
`}
@@ -2097,16 +3480,98 @@

Ghost Beans

/* ───────── Smells tab ───────── */ const sm = reportData.smells || {}; -function smellTable(list, valKey, valLabel) { +function smellTable(list, valKey, namesKey) { if (!list || !list.length) return '
None detected.
'; const max = Math.max(...list.map(e=>e[valKey])) || 1; - return `${ - list.map(e=>` - `).join('')}
Bean${valLabel}
${esc(e.beanName)}
${e[valKey]}
`; + return `${ + list.map(e => { + const names = e[namesKey] || []; + return ` + `; + }).join('')}
Bean${namesKey}
${names.length + ? `
${escBean(e.beanName)}
${nameList(names)}
` + : `${escBean(e.beanName)}`}
${e[valKey]}
`; +} +/* v1.1.3 — the fan-in / fan-out tables are top-10: they show the extremes and + hide the shape. One dot per (fan-out, fan-in) position answers the question + the tables cannot: is coupling concentrated in a few god beans or spread flat? + Positions are bucketed — 95 petclinic beans share (0,1), and 95 identical + overlapping dots would be a lie told with ink. */ +const SC_CAP = 6; // names listed in a dot's tooltip +function scatterSvg(hideFw) { + const g = deps.graph || {}; + const all = [...new Set([...Object.keys(g), ...Object.keys(fanIn)])] + .filter(b => !(hideFw && isFw(b))); + if (all.length < 5) return '
Not enough beans in the resolved graph to plot.
'; + const xOf = b => (g[b] || []).length, yOf = b => fanIn[b] || 0; + const xMax = Math.max(1, ...all.map(xOf)), yMax = Math.max(1, ...all.map(yOf)); + if (xMax === 1 && yMax === 1) return '
Every bean has at most one dependency in either direction — nothing to rank.
'; + // Buckets keyed by position AND classification, so a shared position can still + // show which side of it is framework. + const buckets = new Map(); + all.forEach(b => { + const k = xOf(b) + '|' + yOf(b) + '|' + (isFw(b) ? 1 : 0); + (buckets.get(k) || buckets.set(k, []).get(k)).push(b); + }); + const maxCount = Math.max(...[...buckets.values()].map(v => v.length)); + const W = 620, H = 290, L = 46, R = 22, T = 26, B = 44; + const pw = W - L - R, ph = H - T - B, base = T + ph; + // Square-root axes: petclinic's max fan-in is 25 with a median of 1, and a + // linear axis puts every bean in the corner. Every tick prints its real value, + // so the scale is visible rather than silently applied. + const px = v => L + Math.sqrt(v / xMax) * pw; + const py = v => base - Math.sqrt(v / yMax) * ph; + const ticks = max => [0, 1, 2, 3, 5, 8, 12, 20, 30, 50, 80, 120, 200].filter(t => t <= max).concat(max); + const grid = [...new Set(ticks(yMax))].map(t => + `` + + `${t}`).join('') + + [...new Set(ticks(xMax))].map(t => + `${t}`).join(''); + // I = Ce/(Ca+Ce) >= 0.8 <=> fanOut >= 4 * fanIn — the same threshold the + // unstable table uses, so the chart and the table cannot disagree. + const iPts = []; + for (let i = 0; i <= 24; i++) { + const x = xMax * i / 24, y = x / 4; + if (y > yMax) break; + iPts.push(`${px(x).toFixed(1)},${py(y).toFixed(1)}`); + } + const dots = [...buckets.entries()].map(([k, beans]) => { + const [x, y, fw] = k.split('|'); + const r = 2.5 + 7 * Math.sqrt(beans.length / maxCount); + const names = beans.slice(0, SC_CAP).map(b => b.replace(/^&/, '')).join(', '); + const more = beans.length > SC_CAP ? ` … +${beans.length - SC_CAP} more` : ''; + const head = beans.length === 1 ? '' : `${beans.length} beans · `; + return { fw: fw === '1', svg: `${head}fan-out ${x}, fan-in ${y}\n${esc(names)}${esc(more)}` }; + }); + const fwCount = all.filter(isFw).length; + return ` + ${grid} + ${iPts.length > 1 ? ` + I = 0.8 · below: unstable` : ''} + ↖ god beans — many depend on them + shotgun surgery risk ↘ + ${dots.filter(d => d.fw).map(d => d.svg).join('')} + ${dots.filter(d => !d.fw).map(d => d.svg).join('')} + fan-out — beans it depends on → + ↑ fan-in + +

${fmt(all.length)} beans, ${fmt(buckets.size)} distinct positions — dot size is how many beans share one. + ${hideFw ? '' : `${fmt(fwCount)} dimmed as framework by package prefix (the graph filter's heuristic — a camelCase framework bean reads as user-defined).`} + Axes are square-root scaled so the tail stays readable; every tick is a real count. Click a single-bean dot to open it in the graph.

`; } $('#tab-smells').innerHTML = `

Architecture Smells

-

Computed on the live resolved graph — what Spring actually wired. ${sm.frameworkFiltered?'Framework beans filtered out (rankings show beans you can refactor).':''}

+

Computed on the live resolved graph — what Spring actually wired. ${sm.frameworkFiltered?'Framework beans filtered out (rankings show beans you can refactor).':''} Click a bean to see which beans are on the other end.

+
+
🧭 Coupling quadrant + +
+
${scatterSvg(false)}
+
🔗 High fan-in · coupling hotspots
${smellTable(sm.highFanIn,'inDegree','dependents')}
💥 High fan-out · shotgun surgery risk
${smellTable(sm.highFanOut,'outDegree','dependencies')}
@@ -2114,28 +3579,120 @@

Architecture Smells

📈 Unstable beans · I = Ce / (Ca + Ce) ≥ 0.8
${(sm.unstable&&sm.unstable.length) ? `${ - sm.unstable.map(e=>``).join('')}
BeanInstabilityFan-inFan-out
${esc(e.beanName)}${e.instability}${e.fanIn}${e.fanOut}
` : '
None over threshold.
'} + sm.unstable.map(e=>`${escBean(e.beanName)}${e.instability}${e.fanIn}${e.fanOut}`).join('')}` : '
None over threshold.
'}
`; +const scWrap = $('#sc-wrap'), scHide = $('#sc-hide-fw'); +if (scHide) scHide.onchange = () => { scWrap.innerHTML = scatterSvg(scHide.checked); }; +if (scWrap) scWrap.addEventListener('click', e => { + const dot = e.target.closest('.sc-dot.one'); + if (dot) focusBean(dot.dataset.bean); +}); + /* ───────── Timing tab ───────── */ const steps = reportData.startupSlowestSteps || []; const trendHistory = reportData.trendHistory || []; +const TREND_CFG = (reportData.gates && reportData.gates.config) || {}; +const TREND_ABS = TREND_CFG.startupTimeAbsoluteThresholdMs != null ? TREND_CFG.startupTimeAbsoluteThresholdMs : 500; +const TREND_PCT = TREND_CFG.startupTimeRelativePercent != null ? TREND_CFG.startupTimeRelativePercent : 20; +const TREND_BAND = { + unexplained: { fill: 'var(--danger)', op: 0.17, txt: 'unexplained by bean count' }, + grew: { fill: 'var(--warn)', op: 0.15, txt: 'slower, and the app grew' }, + unknown: { fill: 'var(--warn)', op: 0.15, txt: 'slower; this run pair has no bean count' }, + faster: { fill: 'var(--ok)', op: 0.15, txt: 'faster' } +}; +const beanDelta = (a, b) => { + const d = b - a; + if (d === 0) return 'with no new beans'; + return d > 0 ? `with ${fmt(d)} new bean${d > 1 ? 's' : ''}` : `with ${fmt(-d)} bean${d < -1 ? 's' : ''} gone`; +}; const threadDist = reportData.threadDistribution; const slowBeans = reportData.slowBeans || []; function timingTable(rows, nameKey, msKey) { if (!rows.length) return '
No data.
'; const max = rows[0][msKey] || 1; return `${rows.slice(0,12).map(r=>` - + `).join('')}
${esc(r[nameKey])}
${escBean(r[nameKey])}
${fmt(r[msKey])}ms
`; } +/* v1.1.3 — startupSlowestSteps carries tags {beanName, beanType, threadName} and + the table showed none of it: fifteen rows all reading spring.beans.instantiate. + tags is optional — steps that are not bean instantiation render as before. */ +function stepTable(rows) { + if (!rows.length) return '
No data.
'; + const max = rows[0].durationMs || 1; + const anyTagged = rows.some(r => r.tags && r.tags.beanName); + return `${anyTagged?'':''}${ + rows.slice(0, 12).map(r => { + const t = r.tags || {}; + const offMain = t.threadName && t.threadName !== 'main'; + const bean = t.beanName + ? (t.beanType + ? `
${escBean(t.beanName)}
${esc(t.beanType)}${t.threadName?`
thread: ${esc(t.threadName)}`:''}
` + : `${escBean(t.beanName)}`) + : ''; + return ` + ${anyTagged?``:''} + `; + }).join('')}
StepBeanTime
${esc(r.name)}${offMain?` ${esc(t.threadName)}`:''}${bean}
${fmt(r.durationMs)}ms
`; +} +/* v1.1.3 — Pareto: the histogram says how instantiation times are distributed, + this says how few beans you would have to fix. Same data, actionable version. */ +function startupPareto() { + const entries = Object.entries(beanTimings) + .filter(([, v]) => typeof v === 'number' && v > 0) + .sort((a, b) => b[1] - a[1]); + if (entries.length < 5) { + return '
No per-bean timings captured (startup was not buffering).
'; + } + const total = entries.reduce((sum, [, v]) => sum + v, 0); + const W = 620, H = 250, L = 54, R = 18, T = 18, B = 46; + const pw = W - L - R, ph = H - T - B, base = T + ph; + const x = i => L + (i + 1) / entries.length * pw; + let cum = 0, knee = -1; + const pts = entries.map(([, v], i) => { + cum += v; + const share = cum / total; + if (knee < 0 && share >= 0.8) knee = i; + return `${x(i).toFixed(1)},${(base - share * ph).toFixed(1)}`; + }); + if (knee < 0) knee = entries.length - 1; // one bean over 80% on its own + const grid = [0, 0.25, 0.5, 0.75, 1].map(f => { + const y = base - ph * f; + return `` + + `${(f * 100).toFixed(0)}%`; + }).join(''); + const y80 = base - ph * 0.8, kx = x(knee); + const kneeLabelRight = kx < W * 0.55; + const top = entries.slice(0, 5); + return ` + ${grid} + + + + + ${fmt(knee + 1)} bean${knee ? 's' : ''} = 80% + 1 + ${fmt(entries.length)} + beans, slowest first → + +

${fmt(knee + 1)} of ${fmt(entries.length)} beans account for 80% of measured bean-instantiation time. + Slowest: ${top.map(([b, v]) => `${escBean(b)} ${fmt(v)}ms`).join(' · ')}.

+

A bean's time includes the beans its constructor triggers, so the ${fmt(total)}ms these shares are taken from counts nested instantiation more than once — it is a ranking, not a wall-clock budget.

`; +} $('#tab-timing').innerHTML = `

Startup Timing

From BufferingApplicationStartup — real measured instantiation, no reflection heuristics.

+
+
📉 How few beans you would have to fix cumulative
+ ${startupPareto()} +
${threadDistributionCard()}
-
🐢 Slowest startup steps
${timingTable(steps,'name','durationMs')}
+
🐢 Slowest startup steps
${stepTable(steps)}
⏳ Slow bean instantiation
${timingTable(slowBeans,'beanName','durationMs')}
@@ -2144,57 +3701,109 @@

Startup Timing

${cp.available && cp.path ? `
Critical path — the chain your readiness sits on
-
${cp.path.map(n=>`${esc(n.beanName)} ${n.ownMs!=null?n.ownMs+'ms':''}`).join('')}
+
${cp.path.map(n=>`${escBean(n.beanName)} ${n.ownMs!=null?n.ownMs+'ms':''}${ + n.cumulativeMs!=null?` · ${fmt(n.cumulativeMs)}ms in`:''}`).join('')}
+ ${cp.path.some(n=>n.cumulativeMs!=null) ? `

Bold is the bean's own instantiation time; the dim number is how far into the ${fmt(cp.totalMs)}ms chain it sits.

` : ''}
`:''} ${trendSparkline()}`; -/* v1.1.0: trend sparkline */ +/* v1.1.0 trend, rebuilt in v1.1.3. + One line said startup got slower and could not say why: an app that added 40 + beans and an app that added none draw the identical curve, and only the second + is a bug. Bean count now shares the plot on its own axis, and each interval + between two runs carries a verdict computed with the startup-time gate's own + thresholds — so the chart can never call something a regression the gate lets + pass. */ +/* Red requires a bean count on BOTH ends — a pre-1.1.3 entry can only ever reach + amber, because "nothing was added" is a claim its data cannot support. */ +function trendVerdict(a, b) { + const d = b.totalStartupMs - a.totalStartupMs; + const pct = a.totalStartupMs > 0 ? d / a.totalStartupMs * 100 : 0; + if (-d >= TREND_ABS && -pct >= TREND_PCT) return 'faster'; + if (!(d >= TREND_ABS && pct >= TREND_PCT)) return 'none'; + if (a.beanCount == null || b.beanCount == null) return 'unknown'; + return (b.beanCount - a.beanCount) / Math.max(1, a.beanCount) * 100 >= 1 ? 'grew' : 'unexplained'; +} function trendSparkline() { - if (trendHistory.length < 2) { + // An entry written on a run with no ApplicationReadyEvent timing has no + // totalStartupMs; it cannot be plotted and must not be read as zero. + const tr = trendHistory.filter(e => typeof e.totalStartupMs === 'number'); + if (tr.length < 2) { return '
Need at least 2 baseline writes to show a trend. Run with wiredoctor.baseline-write=true across builds.
'; } - const w = 600, h = 120, pad = { top: 10, right: 60, bottom: 30, left: 50 }; - const values = trendHistory.map(e => e.totalStartupMs); - const min = Math.min(...values), max = Math.max(...values); - const range = max - min || 1; - const pts = trendHistory.map((e, i) => { - const x = pad.left + (trendHistory.length === 1 ? w/2 : (i / (trendHistory.length - 1)) * (w - pad.left - pad.right)); - const y = pad.top + (1 - (e.totalStartupMs - min) / range) * (h - pad.top - pad.bottom); - return `${x.toFixed(1)},${y.toFixed(1)}`; + const W = 680, H = 240, L = 56, R = 58, T = 18, B = 40; + const pw = W - L - R, ph = H - T - B, base = T + ph; + const x = i => L + (i / (tr.length - 1)) * pw; + const ms = tr.map(e => e.totalStartupMs); + const msMin = Math.min(...ms), msMax = Math.max(...ms), msRange = (msMax - msMin) || 1; + const y1 = v => T + (1 - (v - msMin) / msRange) * ph; + // Counted runs in consecutive stretches: a baseline can hold pre-1.1.3 entries + // with no count, and one line drawn across that hole would join run 2 to run 5 + // as though the runs between them had been measured. + const segs = []; + tr.forEach((e, i) => { + if (typeof e.beanCount !== 'number') { segs.push([]); return; } + (segs.length ? segs[segs.length - 1] : segs[segs.push([]) - 1]).push(i); }); - const last = trendHistory[trendHistory.length - 1]; - const prev = trendHistory.length >= 2 ? trendHistory[trendHistory.length - 2] : last; + const beanSegs = segs.filter(seg => seg.length >= 2); + const counted = tr.filter(e => typeof e.beanCount === 'number'); + const showBeans = beanSegs.length > 0; + const bc = counted.map(e => e.beanCount); + const bcMin = showBeans ? Math.min(...bc) : 0, bcMax = showBeans ? Math.max(...bc) : 1; + const bcRange = (bcMax - bcMin) || 1; + const y2 = v => T + (1 - (v - bcMin) / bcRange) * ph; + const bands = [], legend = new Set(); + for (let i = 0; i < tr.length - 1; i++) { + const v = trendVerdict(tr[i], tr[i + 1]); + if (v === 'none') continue; + legend.add(v); + const b = TREND_BAND[v], d = tr[i + 1].totalStartupMs - tr[i].totalStartupMs; + const dBeans = (tr[i].beanCount != null && tr[i + 1].beanCount != null) + ? ' ' + beanDelta(tr[i].beanCount, tr[i + 1].beanCount) : ''; + bands.push(`Run ${i + 1} → ${i + 2}: ${d >= 0 ? '+' : ''}${fmt(d)}ms${dBeans} — ${b.txt}`); + } + const yTicks = [msMin, msMin + msRange / 2, msMax].map(v => Math.round(v)); + const grid = yTicks.map(v => `` + + `${fmt(v)}ms`).join(''); + const bcTicks = showBeans ? [bcMin, bcMax].map(v => `${fmt(v)}`).join('') : ''; + const dates = tr.map(e => new Date(e.timestamp).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })); + const last = tr[tr.length - 1], prev = tr[tr.length - 2]; const delta = last.totalStartupMs - prev.totalStartupMs; - const pct = prev.totalStartupMs > 0 ? ((delta / prev.totalStartupMs) * 100).toFixed(1) : '0.0'; + const pct = prev.totalStartupMs > 0 ? (delta / prev.totalStartupMs * 100).toFixed(1) : '0.0'; + const lastV = trendVerdict(prev, last); const arrow = delta > 0 ? '↑' : delta < 0 ? '↓' : '→'; - const color = delta > 0 ? 'var(--danger)' : delta < 0 ? 'var(--ok)' : 'var(--text-2)'; - const dates = trendHistory.map(e => { - const d = new Date(e.timestamp); - return d.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }); - }); - const yTicks = [min, min + range * 0.5, max].map(v => Math.round(v) + 'ms').reverse(); + const chip = lastV === 'unexplained' ? 'var(--danger)' : lastV === 'faster' ? 'var(--ok)' + : lastV === 'none' ? 'var(--text-2)' : 'var(--warn)'; + const head = `Run ${tr.length - 1} → ${tr.length}: ${delta >= 0 ? '+' : ''}${fmt(delta)}ms (${pct}%)`; + const verdictLine = + lastV === 'none' ? `${head} — inside the gate's ${fmt(TREND_ABS)}ms / ${TREND_PCT}% thresholds.` + : lastV === 'unknown' ? `${head} — slower, and neither run recorded a bean count, so nothing here can rule it explained or not.` + : `${head} ${beanDelta(prev.beanCount, last.beanCount)} — ${TREND_BAND[lastV].txt}.`; return `
-
Startup time trend ${arrow} ${delta>0?'+':''}${delta}ms (${pct}%)
-
${trendHistory.length} baseline entries · cap ${reportData.gates && reportData.gates.trendHistoryCap ? reportData.gates.trendHistoryCap : 'unlimited'}
- - - - ${yTicks.map((t, i) => { - const y = pad.top + (i / (yTicks.length - 1)) * (h - pad.top - pad.bottom); - return `${t} - `; - }).join('')} - - ${trendHistory.map((e, i) => { - const x = pad.left + (trendHistory.length === 1 ? w/2 : (i / (trendHistory.length - 1)) * (w - pad.left - pad.right)); - const y = pad.top + (1 - (e.totalStartupMs - min) / range) * (h - pad.top - pad.bottom); - return i === trendHistory.length - 1 - ? `${e.totalStartupMs}ms` - : ``; - }).join('')} - ${dates[0]} - ${trendHistory.length > 1 ? `${dates[dates.length-1]}` : ''} +
Startup time trend ${arrow} ${delta > 0 ? '+' : ''}${fmt(delta)}ms (${pct}%)
+
${fmt(tr.length)} baseline entries · cap ${reportData.gates && reportData.gates.trendHistoryCap ? reportData.gates.trendHistoryCap : 'unlimited'} · bands use the startup-time gate's thresholds (≥${fmt(TREND_ABS)}ms AND ≥${TREND_PCT}%)
+ + ${bands.join('')} + ${grid}${bcTicks} + + + ${beanSegs.map(seg => ``).join('')} + + ${tr.map((e, i) => i === tr.length - 1 + ? `` + : ``).join('')} + ${dates[0]} · run 1 + ${dates[dates.length - 1]} · run ${tr.length} + ${showBeans ? `beans (dashed)` : ''} + startup ms +

${verdictLine} + ${legend.size ? `
${[...legend].map(v => ` ${TREND_BAND[v].txt}`).join(' · ')}` : ''}

+

Both axes span the observed range, not zero. A flat bean count with rising startup does not prove a code regression — a bigger dataset, a slower runner or a cold cache draw the same line. The band says where to look, not what is wrong.${showBeans ? '' : ' No entry pair carries a bean count yet, so no interval can be ruled unexplained.'}

`; } @@ -2249,7 +3858,7 @@

Startup Timing

const nsb = gates.newSlowBeans || []; const sbActual = diffRan ? (nsb.length ? `${nsb.length} new slow bean${nsb.length>1?'s':''}: ` + - nsb.slice(0,5).map(b=>`${esc(b.beanName)} (${fmt(b.instantiationMs)}ms)`).join(', ') + nsb.slice(0,5).map(b=>`${escBean(b.beanName)} (${fmt(b.instantiationMs)}ms)`).join(', ') : 'none crossed the threshold') : ''; const rows = [ @@ -2322,9 +3931,6 @@

Autoconfiguration Conditions

if (orphans.has(bean)) return { bg:'#e8a33d', glow:false }; return { bg:'#3d4a63', glow:false }; } -const FRAMEWORK_PREFIX = /^(org\.springframework|org\.apache|com\.sun|java\.|javax\.|jakarta\.|io\.netty|com\.fasterxml|io\.micrometer)/; -const isFw = b => FRAMEWORK_PREFIX.test(b); - function buildGraph() { if (typeof vis === 'undefined') { // Only reachable via the CDN fallback (bundled resource missing) while offline. @@ -2449,6 +4055,15 @@

Autoconfiguration Conditions

if (hit) { network.focus(hit.id, { scale: 1.2, animation: true }); network.selectNodes([hit.id]); showNode(hit.id); } }); } +/* Jump from anywhere to this bean in the graph. Degrades silently: no vis + library, or the node was dropped by graph truncation. */ +function focusBean(bean) { + activate('graph'); + if (!network || !allNodes || !allNodes.get(bean)) return; + network.focus(bean, { scale: 1.3, animation: true }); + network.selectNodes([bean]); + showNode(bean); +} function showNode(bean) { const panel = $('#node-panel'); const depsOut = (deps.graph && deps.graph[bean]) || []; @@ -2462,13 +4077,13 @@

Autoconfiguration Conditions

const ms = beanTimings[bean]; panel.innerHTML = ` -

${esc(bean)}

+

${escBean(bean)}

${tags.join('')||'healthy'}
${ms != null ? `
Instantiation${ms} ms
` : ''}
Dependents (fan-in)${fi}
Dependencies (fan-out)${depsOut.length}
Depends on
-
    ${depsOut.length ? depsOut.slice(0,30).map(d=>`
  • → ${esc(d)}
  • `).join('') : '
  • nothing
  • '}
`; +
    ${depsOut.length ? depsOut.slice(0,30).map(d=>`
  • → ${escBean(d)}
  • `).join('') : '
  • nothing
  • '}
`; panel.classList.add('open'); } diff --git a/sample/v1.1.4/wiredoctor-report.json b/sample/v1.1.4/wiredoctor-report.json new file mode 100644 index 0000000..8b66034 --- /dev/null +++ b/sample/v1.1.4/wiredoctor-report.json @@ -0,0 +1,2619 @@ +{ + "schemaVersion" : 1, + "activeProfiles" : [ ], + "threadDistribution" : { + "perThread" : { + "main" : [ "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration", "wireDoctorGhostTrackingPostProcessor", "healthEndpointGroups", "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties", "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration", "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration", "hikariDataSourceMeterBinder", "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties", "jdbcTemplate", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", "webEndpointPathMapper", "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "org.springframework.context.annotation.internalConfigurationAnnotationProcessor", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration", "&entityManagerFactory", "openEntityManagerInViewInterceptor", "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration", "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration", "beanNameViewResolver", "pathPatternRequestMatcherBuilder", "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration", "viewResolver", "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration", "projectingArgumentResolverBeanPostProcessor", "tomcatServletWebServerFactoryCustomizer", "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties", "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration", "pricingService", "dataSourceScriptDatabaseInitializer", "applicationTaskExecutorAsyncConfigurer", "meterRegistryPostProcessor", "endpointMediaTypes", "jvmCompilationMetrics", "jacksonMixinModuleEntries", "orderController", "jdbcConnectionDetailsHikariBeanPostProcessor", "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration", "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties", "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration", "repositoryTagsProvider", "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties", "org.springframework.scheduling.annotation.ProxyAsyncConfiguration", "org.springframework.boot.context.internalConfigurationPropertiesBinder", "dataSourcePoolMetadataMeterBinder", "dbHealthContributor", "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration", "jpa.OrderRepository.fragments#0", "catalogCacheWarmer", "webServerFactoryCustomizerBeanPostProcessor", "controllerEndpointHandlerMapping", "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration", "jdbcClient", "observabilitySchedulingConfigurer", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration", "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration", "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration", "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties", "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "org.springframework.boot.persistence.autoconfigure.EntityScanPackages", "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties", "conventionErrorViewResolver", "wireDoctorGhostTracker", "org.springframework.context.event.internalEventListenerProcessor", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", "formContentFilter", "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration", "defaultViewResolver", "routerFunctionMapping", "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration", "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties", "multipartResolver", "healthEndpointWebExtension", "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration", "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration", "conversionServicePostProcessor", "webExposeExcludePropertyEndpointFilter", "requestMappingHandlerMapping", "lifecycleProcessor", "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "org.springframework.aop.config.internalAutoProxyCreator", "requestMappingHandlerAdapter", "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration", "tomcatMetricsBinder", "wiredoctor-com.wiredoctor.WireDoctorProperties", "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration", "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension", "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration", "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration", "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties", "sslMeterBinder", "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration", "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties", "org.springframework.context.annotation.internalAutowiredAnnotationProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration", "orderService", "metricsRepositoryMethodInvocationListenerBeanPostProcessor", "classLoaderMetrics", "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration", "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration", "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration", "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration", "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory", "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration", "springDataWebSettings", "fileWatcher", "sortResolver", "stringHttpMessageConvertersCustomizer", "springSecurityPathPatternParserBeanDefinitionRegistryPostProcessor", "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration", "standardJsonMapperBuilderCustomizer", "thymeleafViewResolver", "errorAttributes", "beanNameHandlerMapping", "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration", "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration", "delegatingApplicationListener", "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration", "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter", "org.springframework.data.web.config.SpringDataJacksonConfiguration", "bootstrapExecutor", "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration", "flashMapManager", "orderRepository", "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration", "jackson2EndpointJsonMapper", "requestMatcherProvider", "legacyExportService", "healthHttpCodeStatusMapper", "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration", "metricsRepositoryMethodInvocationListener", "uptimeMetrics", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration", "controllerExposeExcludePropertyEndpointFilter", "jvmThreadMetrics", "pathMappedEndpoints", "auditService", "standardJsonFactoryBuilderCustomizer", "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar", "jsonFactory", "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration", "managementServletContext", "fileDescriptorMetrics", "livenessStateHealthIndicator", "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration", "org.springframework.transaction.config.internalTransactionalEventListenerFactory", "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration", "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration", "mvcValidator", "applicationAvailability", "defaultTemplateResolver", "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration", "mvcResourceUrlProvider", "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties", "sslInfo", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration", "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties", "servletEndpointRegistrar", "archivedReportExporter", "org.springframework.boot.autoconfigure.AutoConfigurationPackages", "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties", "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties", "jackson3pageModule", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties", "hikariPoolDataSourceMetadataProvider", "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration", "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration", "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration", "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration", "org.springframework.data.web.config.SpringDataWebConfiguration", "legacyImportService", "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration", "propertiesEndpointAccessResolver", "errorPageRegistrarBeanPostProcessor", "mvcConversionService", "endpointJackson2ObjectMapperWebMvcConfigurer", "initializeAuthenticationProviderBeanManagerConfigurer", "org.springframework.context.annotation.internalPersistenceAnnotationProcessor", "controllerEndpointDiscoverer", "org.springframework.boot.context.properties.BoundConfigurationProperties", "diskSpaceHealthIndicator", "jvmMemoryMetrics", "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration", "mvcPathMatcher", "handlerExceptionResolver", "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration", "basicErrorController", "pingHealthContributor", "sslHealthIndicator", "healthEndpointGroupMembershipValidator", "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration", "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration", "groupsHealthContributorNameValidator", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration", "namedParameterJdbcTemplate", "simpleAsyncTaskExecutorBuilder", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties", "spelValueExpressionResolver", "org.springframework.scheduling.config.internalAsyncAnnotationProcessor", "mvcViewResolver", "simpleConfig", "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration", "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration", "requestDataValueProcessor", "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration", "observationRegistry", "mvcUriComponentsContributor", "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties", "webAccessPropertiesOperationFilter", "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration", "readinessStateHealthIndicator", "objectPostProcessor", "jpaSharedEM_entityManagerFactory", "wiredoctorDemoApplication", "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration", "templateEngine", "jackson3GeoModule", "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration", "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties", "platformTransactionManagerCustomizers", "securityFilterChainRegistration", "data-jpa.repository-aot-processor#0", "endpointCachingOperationInvokerAdvisor", "defaultServletHandlerMapping", "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration", "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties", "persistenceExceptionTranslationPostProcessor", "characterEncodingFilter", "observationRegistryPostProcessor", "sortCustomizer", "webEndpointDiscoverer", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration", "org.springframework.security.config.annotation.web.configuration.ObservationConfiguration", "preserveErrorControllerTargetClassPostProcessor", "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration", "logbackMetrics", "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration", "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties", "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration", "propertySourcesPlaceholderConfigurer", "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration", "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration", "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties", "methodValidationPostProcessor", "wireDoctorGhostReportWriter", "jsonComponentModule", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "entityManagerFactoryBuilder", "org.springframework.context.event.internalEventListenerFactory", "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration", "webSocketWebServerCustomizer", "clientConvertersCustomizer", "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties", "springSecurityFilterChain", "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration", "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties", "healthStatusAggregator", "endpointJsonMapper", "enableGlobalAuthenticationAutowiredConfigurer", "transactionTemplate", "mvcUrlPathHelper", "jsonMapperBuilder", "servletWebServerFactoryCustomizer", "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration", "inMemoryUserDetailsManager", "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration", "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration", "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration", "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration", "jpa.named-queries#0", "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration", "filterChainDecoratorPostProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration", "metricsObservationHandlerGroup", "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration", "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties", "transactionInterceptor", "simpleMeterRegistry", "authenticationEventPublisher", "bootstrapExecutorAliasPostProcessor", "startupTimeMetrics", "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties", "multipartConfigElement", "requestContextFilter", "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration", "pageableResolver", "availabilityProbesHealthEndpointGroupsPostProcessor", "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration", "handlerFunctionAdapter", "localeResolver", "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration", "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration", "jvmHeapPressureMetrics", "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration", "welcomePageNotAcceptableHandlerMapping", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration", "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration", "endpointOperationParameterMapper", "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration", "spring.transaction-org.springframework.boot.transaction.autoconfigure.TransactionProperties", "jpaVendorAdapter", "sslBundleRegistry", "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration", "wireDoctorAnalyzer", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration", "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration", "jacksonGeoModule", "meterRegistryCloser", "mvcContentNegotiationManager", "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration", "httpRequestHandlerAdapter", "asyncMailer", "org.springframework.aop.framework.autoproxy.defaultProxyConfig", "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration", "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration", "sslPropertiesSslBundleRegistrar", "org.springframework.context.annotation.internalCommonAnnotationProcessor", "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration", "defaultMeterObservationHandler", "notificationService", "simpleControllerHandlerAdapter", "resourceHandlerMapping", "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration", "simpleAsyncTaskSchedulerBuilder", "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties", "healthContributorRegistry", "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties", "org.springframework.transaction.config.internalTransactionAdvisor", "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration", "eagerJpaMetamodelCacheCleanup", "propertiesObservationFilter", "persistenceManagedTypes", "micrometerClock", "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration", "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari", "propertiesMeterFilter", "problemDetailJsonMapperBuilderCustomizer", "demoSecurityConfig", "jacksonJsonMapper", "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration", "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration", "endpointJsonMapperWebMvcConfigurer", "diskSpaceMetrics", "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup", "servletEndpointDiscoverer", "metricsHttpServerUriTagFilter", "eagerTaskExecutorMetrics", "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration", "privilegeEvaluator", "jacksonMixinModule", "healthEndpoint", "viewControllerHandlerMapping", "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties", "mvcPatternParser", "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor", "dispatcherServlet", "jvmInfoMetrics", "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties", "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration", "demoChain", "webEndpointServletHandlerMapping", "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor", "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration", "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration", "threadPoolTaskExecutorBuilder", "processorMetrics", "inventoryService", "transactionAttributeSource", "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration", "transactionExecutionListeners", "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration", "serverConvertersCustomizer", "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration", "transactionManager", "org.springframework.data.web.config.SpringDataJackson3Configuration", "errorPageCustomizer", "openEntityManagerInViewInterceptorConfigurer", "tomcatWebServerFactoryCustomizer", "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration", "authenticationManagerPostProcessor", "threadPoolTaskSchedulerBuilder", "viewNameTranslator", "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration", "server-org.springframework.boot.web.server.autoconfigure.ServerProperties", "pageableCustomizer", "dispatcherServletRegistration", "dataSource", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "healthEndpointGroupsBeanPostProcessor", "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration", "com.wiredoctor.WireDoctorAutoConfiguration", "jpaMappingContext", "tomcatServletWebServerFactory", "mvcApiVersionStrategy", "error", "webAuthorizationManagerPostProcessor", "jdbcConnectionDetails", "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration", "jvmGcMetrics", "offsetResolver", "initializeUserDetailsBeanManagerConfigurer", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties", "jacksonJsonHttpMessageConvertersCustomizer", "healthEndpointWebMvcHandlerMapping", "defaultValidator", "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration", "welcomePageHandlerMapping", "servletExposeExcludePropertyEndpointFilter", "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration", "authenticationManagerBuilder", "webMvcObservationFilter", "securityDialect", "pageModule", "webSecurityExpressionHandler" ] + }, + "counts" : { + "main" : 428 + } + }, + "startupSlowestSteps" : [ { + "name" : "spring.context.refresh", + "durationMs" : 6321, + "tags" : { } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 2205, + "tags" : { + "threadName" : "main", + "beanName" : "&entityManagerFactory", + "beanType" : "interface org.springframework.context.weaving.LoadTimeWeaverAware" + } + }, { + "name" : "spring.context.beans.post-process", + "durationMs" : 1830, + "tags" : { } + }, { + "name" : "spring.context.beandef-registry.post-process", + "durationMs" : 1457, + "tags" : { + "postProcessor" : "org.springframework.context.annotation.ConfigurationClassPostProcessor@47404bea" + } + }, { + "name" : "spring.context.config-classes.parse", + "durationMs" : 1432, + "tags" : { + "classCount" : "164" + } + }, { + "name" : "spring.boot.webserver.create", + "durationMs" : 552, + "tags" : { + "factory" : "class org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 387, + "tags" : { + "threadName" : "main", + "beanName" : "demoChain" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 341, + "tags" : { + "threadName" : "main", + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", + "beanType" : "class org.springframework.security.config.annotation.web.builders.HttpSecurity" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 279, + "tags" : { + "threadName" : "main", + "beanName" : "catalogCacheWarmer" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 207, + "tags" : { + "threadName" : "main", + "beanName" : "orderController" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 198, + "tags" : { + "threadName" : "main", + "beanName" : "orderService", + "beanType" : "class com.example.demo.order.OrderService" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 193, + "tags" : { + "threadName" : "main", + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 189, + "tags" : { + "threadName" : "main", + "beanName" : "orderRepository", + "beanType" : "interface com.example.demo.domain.OrderRepository" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 176, + "tags" : { + "threadName" : "main", + "beanName" : "tomcatServletWebServerFactory", + "beanType" : "interface org.springframework.boot.web.server.servlet.ServletWebServerFactory" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 173, + "tags" : { + "threadName" : "main", + "beanName" : "mvcContentNegotiationManager", + "beanType" : "interface org.springframework.web.accept.ContentNegotiationStrategy" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 148, + "tags" : { + "threadName" : "main", + "beanName" : "requestMappingHandlerAdapter" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 123, + "tags" : { + "threadName" : "main", + "beanName" : "jacksonJsonHttpMessageConvertersCustomizer", + "beanType" : "interface org.springframework.boot.http.converter.autoconfigure.ServerHttpMessageConvertersCustomizer" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 122, + "tags" : { + "threadName" : "main", + "beanName" : "jacksonJsonMapper", + "beanType" : "class tools.jackson.databind.json.JsonMapper" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 114, + "tags" : { + "threadName" : "main", + "beanName" : "webMvcObservationFilter", + "beanType" : "interface org.springframework.boot.web.servlet.ServletContextInitializer" + } + }, { + "name" : "spring.beans.instantiate", + "durationMs" : 99, + "tags" : { + "threadName" : "main", + "beanName" : "dataSourceScriptDatabaseInitializer" + } + } ], + "slowBeans" : [ { + "beanName" : "&entityManagerFactory", + "durationMs" : 2205 + }, { + "beanName" : "demoChain", + "durationMs" : 387 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", + "durationMs" : 341 + }, { + "beanName" : "catalogCacheWarmer", + "durationMs" : 279 + }, { + "beanName" : "orderController", + "durationMs" : 207 + }, { + "beanName" : "orderService", + "durationMs" : 198 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration", + "durationMs" : 193 + }, { + "beanName" : "orderRepository", + "durationMs" : 189 + }, { + "beanName" : "tomcatServletWebServerFactory", + "durationMs" : 176 + }, { + "beanName" : "mvcContentNegotiationManager", + "durationMs" : 173 + }, { + "beanName" : "requestMappingHandlerAdapter", + "durationMs" : 148 + }, { + "beanName" : "jacksonJsonHttpMessageConvertersCustomizer", + "durationMs" : 123 + }, { + "beanName" : "jacksonJsonMapper", + "durationMs" : 122 + }, { + "beanName" : "webMvcObservationFilter", + "durationMs" : 114 + } ], + "beanTimings" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : 0, + "wireDoctorGhostTrackingPostProcessor" : 5, + "healthEndpointGroups" : 17, + "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : 0, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : 0, + "hikariDataSourceMeterBinder" : 0, + "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" : 0, + "jdbcTemplate" : 9, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : 0, + "webEndpointPathMapper" : 3, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : 1, + "org.springframework.context.annotation.internalConfigurationAnnotationProcessor" : 42, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : 0, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : 0, + "&entityManagerFactory" : 2205, + "openEntityManagerInViewInterceptor" : 2, + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : 0, + "beanNameViewResolver" : 0, + "pathPatternRequestMatcherBuilder" : 0, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : 2, + "viewResolver" : 78, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : 0, + "projectingArgumentResolverBeanPostProcessor" : 20, + "tomcatServletWebServerFactoryCustomizer" : 1, + "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" : 1, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : 0, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : 2, + "pricingService" : 5, + "dataSourceScriptDatabaseInitializer" : 99, + "applicationTaskExecutorAsyncConfigurer" : 1, + "meterRegistryPostProcessor" : 45, + "endpointMediaTypes" : 1, + "jvmCompilationMetrics" : 0, + "jacksonMixinModuleEntries" : 3, + "orderController" : 207, + "jdbcConnectionDetailsHikariBeanPostProcessor" : 4, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : 0, + "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : 1, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration" : 0, + "repositoryTagsProvider" : 1, + "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" : 0, + "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" : 9, + "org.springframework.boot.context.internalConfigurationPropertiesBinder" : 1, + "dataSourcePoolMetadataMeterBinder" : 0, + "dbHealthContributor" : 10, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration" : 0, + "jpa.OrderRepository.fragments#0" : 3, + "catalogCacheWarmer" : 279, + "webServerFactoryCustomizerBeanPostProcessor" : 0, + "controllerEndpointHandlerMapping" : 6, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : 0, + "jdbcClient" : 1, + "observabilitySchedulingConfigurer" : 1, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : 0, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : 0, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration" : 0, + "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" : 0, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : 0, + "org.springframework.boot.persistence.autoconfigure.EntityScanPackages" : 0, + "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" : 2, + "conventionErrorViewResolver" : 1, + "wireDoctorGhostTracker" : 1, + "org.springframework.context.event.internalEventListenerProcessor" : 1, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" : 4, + "formContentFilter" : 3, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : 0, + "defaultViewResolver" : 5, + "routerFunctionMapping" : 6, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" : 341, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : 0, + "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" : 0, + "multipartResolver" : 2, + "healthEndpointWebExtension" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : 0, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : 0, + "conversionServicePostProcessor" : 6, + "webExposeExcludePropertyEndpointFilter" : 0, + "requestMappingHandlerMapping" : 63, + "lifecycleProcessor" : 2, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" : 0, + "org.springframework.aop.config.internalAutoProxyCreator" : 17, + "requestMappingHandlerAdapter" : 148, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : 0, + "tomcatMetricsBinder" : 0, + "wiredoctor-com.wiredoctor.WireDoctorProperties" : 5, + "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" : 21, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" : 0, + "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension" : 1, + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : 0, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : 0, + "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" : 1, + "sslMeterBinder" : 2, + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : 0, + "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" : 0, + "org.springframework.context.annotation.internalAutowiredAnnotationProcessor" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration" : 0, + "orderService" : 198, + "metricsRepositoryMethodInvocationListenerBeanPostProcessor" : 1, + "classLoaderMetrics" : 1, + "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" : 0, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" : 193, + "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" : 1, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : 6, + "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : 3, + "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration" : 0, + "springDataWebSettings" : 2, + "fileWatcher" : 1, + "sortResolver" : 4, + "stringHttpMessageConvertersCustomizer" : 2, + "springSecurityPathPatternParserBeanDefinitionRegistryPostProcessor" : 1, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : 4, + "standardJsonMapperBuilderCustomizer" : 26, + "thymeleafViewResolver" : 75, + "errorAttributes" : 1, + "beanNameHandlerMapping" : 6, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : 1, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : 0, + "delegatingApplicationListener" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" : 1, + "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter" : 3, + "org.springframework.data.web.config.SpringDataJacksonConfiguration" : 0, + "bootstrapExecutor" : 17, + "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration" : 10, + "flashMapManager" : 2, + "orderRepository" : 189, + "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration" : 0, + "jackson2EndpointJsonMapper" : 3, + "requestMatcherProvider" : 1, + "legacyExportService" : 21, + "healthHttpCodeStatusMapper" : 2, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : 0, + "metricsRepositoryMethodInvocationListener" : 7, + "uptimeMetrics" : 0, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" : 5, + "controllerExposeExcludePropertyEndpointFilter" : 0, + "jvmThreadMetrics" : 1, + "pathMappedEndpoints" : 64, + "auditService" : 4, + "standardJsonFactoryBuilderCustomizer" : 6, + "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar" : 0, + "jsonFactory" : 39, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : 0, + "managementServletContext" : 0, + "fileDescriptorMetrics" : 0, + "livenessStateHealthIndicator" : 4, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" : 0, + "org.springframework.transaction.config.internalTransactionalEventListenerFactory" : 0, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : 0, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration" : 0, + "mvcValidator" : 1, + "applicationAvailability" : 1, + "defaultTemplateResolver" : 17, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration" : 0, + "mvcResourceUrlProvider" : 2, + "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" : 1, + "sslInfo" : 0, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : 1, + "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" : 12, + "servletEndpointRegistrar" : 30, + "archivedReportExporter" : 7, + "org.springframework.boot.autoconfigure.AutoConfigurationPackages" : 10, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration" : 0, + "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" : 2, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : 1, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration" : 0, + "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" : 1, + "jackson3pageModule" : 1, + "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" : 3, + "hikariPoolDataSourceMetadataProvider" : 1, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : 0, + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : 0, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : 0, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : 0, + "org.springframework.data.web.config.SpringDataWebConfiguration" : 2, + "legacyImportService" : 16, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : 1, + "propertiesEndpointAccessResolver" : 1, + "errorPageRegistrarBeanPostProcessor" : 0, + "mvcConversionService" : 7, + "endpointJackson2ObjectMapperWebMvcConfigurer" : 7, + "initializeAuthenticationProviderBeanManagerConfigurer" : 1, + "org.springframework.context.annotation.internalPersistenceAnnotationProcessor" : 0, + "controllerEndpointDiscoverer" : 2, + "org.springframework.boot.context.properties.BoundConfigurationProperties" : 0, + "diskSpaceHealthIndicator" : 1, + "jvmMemoryMetrics" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : 0, + "mvcPathMatcher" : 1, + "handlerExceptionResolver" : 6, + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration" : 0, + "basicErrorController" : 5, + "pingHealthContributor" : 0, + "sslHealthIndicator" : 3, + "healthEndpointGroupMembershipValidator" : 1, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" : 0, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration" : 0, + "groupsHealthContributorNameValidator" : 0, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration" : 0, + "namedParameterJdbcTemplate" : 3, + "simpleAsyncTaskExecutorBuilder" : 1, + "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" : 3, + "spelValueExpressionResolver" : 0, + "org.springframework.scheduling.config.internalAsyncAnnotationProcessor" : 23, + "mvcViewResolver" : 2, + "simpleConfig" : 5, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration" : 0, + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : 0, + "requestDataValueProcessor" : 1, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : 0, + "observationRegistry" : 93, + "mvcUriComponentsContributor" : 2, + "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" : 0, + "webAccessPropertiesOperationFilter" : 1, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration" : 0, + "readinessStateHealthIndicator" : 1, + "objectPostProcessor" : 3, + "jpaSharedEM_entityManagerFactory" : 13, + "wiredoctorDemoApplication" : 0, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : 0, + "templateEngine" : 60, + "jackson3GeoModule" : 9, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration" : 0, + "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" : 2, + "platformTransactionManagerCustomizers" : 3, + "securityFilterChainRegistration" : 7, + "data-jpa.repository-aot-processor#0" : 5, + "endpointCachingOperationInvokerAdvisor" : 1, + "defaultServletHandlerMapping" : 0, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : 2, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : 0, + "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" : 0, + "persistenceExceptionTranslationPostProcessor" : 2, + "characterEncodingFilter" : 4, + "observationRegistryPostProcessor" : 3, + "sortCustomizer" : 0, + "webEndpointDiscoverer" : 27, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" : 0, + "org.springframework.security.config.annotation.web.configuration.ObservationConfiguration" : 0, + "preserveErrorControllerTargetClassPostProcessor" : 0, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : 0, + "logbackMetrics" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration" : 0, + "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties" : 1, + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : 0, + "propertySourcesPlaceholderConfigurer" : 1, + "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration" : 8, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : 0, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : 0, + "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties" : 1, + "methodValidationPostProcessor" : 33, + "wireDoctorGhostReportWriter" : 6, + "jsonComponentModule" : 5, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" : 32, + "entityManagerFactoryBuilder" : 42, + "org.springframework.context.event.internalEventListenerFactory" : 0, + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration" : 0, + "webSocketWebServerCustomizer" : 1, + "clientConvertersCustomizer" : 1, + "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" : 2, + "springSecurityFilterChain" : 16, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : 23, + "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" : 1, + "healthStatusAggregator" : 4, + "endpointJsonMapper" : 1, + "enableGlobalAuthenticationAutowiredConfigurer" : 1, + "transactionTemplate" : 1, + "mvcUrlPathHelper" : 1, + "jsonMapperBuilder" : 80, + "servletWebServerFactoryCustomizer" : 29, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : 0, + "inMemoryUserDetailsManager" : 7, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : 0, + "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" : 16, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : 0, + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : 0, + "jpa.named-queries#0" : 3, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration" : 0, + "filterChainDecoratorPostProcessor" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : 0, + "metricsObservationHandlerGroup" : 2, + "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" : 17, + "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" : 3, + "transactionInterceptor" : 7, + "simpleMeterRegistry" : 56, + "authenticationEventPublisher" : 6, + "bootstrapExecutorAliasPostProcessor" : 0, + "startupTimeMetrics" : 1, + "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" : 1, + "multipartConfigElement" : 6, + "requestContextFilter" : 3, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration" : 0, + "pageableResolver" : 3, + "availabilityProbesHealthEndpointGroupsPostProcessor" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : 0, + "handlerFunctionAdapter" : 1, + "localeResolver" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" : 1, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration" : 0, + "jvmHeapPressureMetrics" : 3, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : 0, + "welcomePageNotAcceptableHandlerMapping" : 3, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration" : 0, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : 0, + "endpointOperationParameterMapper" : 3, + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration" : 0, + "spring.transaction-org.springframework.boot.transaction.autoconfigure.TransactionProperties" : 1, + "jpaVendorAdapter" : 36, + "sslBundleRegistry" : 15, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : 15, + "wireDoctorAnalyzer" : 3, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : 0, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : 0, + "jacksonGeoModule" : 4, + "meterRegistryCloser" : 1, + "mvcContentNegotiationManager" : 173, + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : 0, + "httpRequestHandlerAdapter" : 0, + "asyncMailer" : 6, + "org.springframework.aop.framework.autoproxy.defaultProxyConfig" : 1, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : 0, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration" : 0, + "sslPropertiesSslBundleRegistrar" : 3, + "org.springframework.context.annotation.internalCommonAnnotationProcessor" : 2, + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" : 0, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : 0, + "defaultMeterObservationHandler" : 67, + "notificationService" : 7, + "simpleControllerHandlerAdapter" : 0, + "resourceHandlerMapping" : 13, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : 0, + "simpleAsyncTaskSchedulerBuilder" : 1, + "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : 0, + "healthContributorRegistry" : 30, + "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" : 1, + "org.springframework.transaction.config.internalTransactionAdvisor" : 33, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : 0, + "eagerJpaMetamodelCacheCleanup" : 0, + "propertiesObservationFilter" : 9, + "persistenceManagedTypes" : 7, + "micrometerClock" : 1, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : 0, + "propertiesMeterFilter" : 2, + "problemDetailJsonMapperBuilderCustomizer" : 1, + "demoSecurityConfig" : 1, + "jacksonJsonMapper" : 122, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : 0, + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : 0, + "endpointJsonMapperWebMvcConfigurer" : 2, + "diskSpaceMetrics" : 0, + "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup" : 0, + "servletEndpointDiscoverer" : 15, + "metricsHttpServerUriTagFilter" : 3, + "eagerTaskExecutorMetrics" : 0, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration" : 0, + "privilegeEvaluator" : 0, + "jacksonMixinModule" : 6, + "healthEndpoint" : 38, + "viewControllerHandlerMapping" : 1, + "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : 2, + "mvcPatternParser" : 1, + "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor" : 0, + "dispatcherServlet" : 20, + "jvmInfoMetrics" : 0, + "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" : 4, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : 0, + "demoChain" : 387, + "webEndpointServletHandlerMapping" : 16, + "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor" : 1, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : 0, + "threadPoolTaskExecutorBuilder" : 7, + "processorMetrics" : 8, + "inventoryService" : 6, + "transactionAttributeSource" : 4, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration" : 0, + "transactionExecutionListeners" : 1, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : 0, + "serverConvertersCustomizer" : 3, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : 0, + "transactionManager" : 6, + "org.springframework.data.web.config.SpringDataJackson3Configuration" : 4, + "errorPageCustomizer" : 38, + "openEntityManagerInViewInterceptorConfigurer" : 5, + "tomcatWebServerFactoryCustomizer" : 11, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : 0, + "authenticationManagerPostProcessor" : 0, + "threadPoolTaskSchedulerBuilder" : 3, + "viewNameTranslator" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" : 0, + "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" : 7, + "pageableCustomizer" : 0, + "dispatcherServletRegistration" : 35, + "dataSource" : 90, + "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" : 1, + "healthEndpointGroupsBeanPostProcessor" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : 0, + "com.wiredoctor.WireDoctorAutoConfiguration" : 0, + "jpaMappingContext" : 27, + "tomcatServletWebServerFactory" : 176, + "mvcApiVersionStrategy" : 4, + "error" : 0, + "webAuthorizationManagerPostProcessor" : 2, + "jdbcConnectionDetails" : 1, + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : 0, + "jvmGcMetrics" : 5, + "offsetResolver" : 1, + "initializeUserDetailsBeanManagerConfigurer" : 1, + "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" : 5, + "jacksonJsonHttpMessageConvertersCustomizer" : 123, + "healthEndpointWebMvcHandlerMapping" : 6, + "defaultValidator" : 10, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration" : 0, + "welcomePageHandlerMapping" : 23, + "servletExposeExcludePropertyEndpointFilter" : 1, + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration" : 0, + "authenticationManagerBuilder" : 9, + "webMvcObservationFilter" : 114, + "securityDialect" : 7, + "pageModule" : 1, + "webSecurityExpressionHandler" : 16 + }, + "slowBeanThreshold" : 100, + "totalStartupMs" : 7067, + "beanCategories" : { + "totalBeans" : 429, + "roleApplication" : 397, + "roleSupport" : 1, + "roleInfrastructure" : 31, + "userDefined" : 23, + "frameworkOwned" : 406 + }, + "proxies" : { + "cglibCount" : 18, + "jdkCount" : 0, + "cglibBeans" : [ "archivedReportExporter", "legacyExportService", "legacyImportService", "asyncMailer", "auditService", "catalogCacheWarmer", "inventoryService", "notificationService", "orderController", "orderService", "pricingService", "dataSource", "jsonFactory", "jacksonJsonMapper", "securityDialect", "thymeleafViewResolver", "defaultTemplateResolver", "templateEngine" ], + "jdkBeans" : [ ], + "notInstantiatedSkipped" : 4 + }, + "ghostCandidates" : { + "confidence" : "LOW", + "disclaimer" : "Heuristic: bean was eagerly instantiated, has no incoming dependencies, and no known entry point was detected from its metadata. NOT proof of dead code — reflective access, programmatic getBean() lookups and framework-collected usages are invisible to this analysis.", + "count" : 2, + "beans" : [ "archivedReportExporter", "catalogCacheWarmer" ], + "entryPointsExcluded" : 1, + "notInstantiatedExcluded" : 0 + }, + "smells" : { + "highFanIn" : [ { + "beanName" : "auditService", + "inDegree" : 4, + "dependents" : [ "inventoryService", "notificationService", "orderService", "pricingService" ] + }, { + "beanName" : "pricingService", + "inDegree" : 2, + "dependents" : [ "catalogCacheWarmer", "orderService" ] + }, { + "beanName" : "asyncMailer", + "inDegree" : 1, + "dependents" : [ "notificationService" ] + }, { + "beanName" : "demoSecurityConfig", + "inDegree" : 1, + "dependents" : [ "demoChain" ] + }, { + "beanName" : "inventoryService", + "inDegree" : 1, + "dependents" : [ "orderService" ] + }, { + "beanName" : "legacyExportService", + "inDegree" : 1, + "dependents" : [ "legacyImportService" ] + }, { + "beanName" : "legacyImportService", + "inDegree" : 1, + "dependents" : [ "legacyExportService" ] + }, { + "beanName" : "notificationService", + "inDegree" : 1, + "dependents" : [ "orderService" ] + }, { + "beanName" : "orderRepository", + "inDegree" : 1, + "dependents" : [ "orderService" ] + }, { + "beanName" : "orderService", + "inDegree" : 1, + "dependents" : [ "orderController" ] + } ], + "highFanOut" : [ { + "beanName" : "orderService", + "outDegree" : 5, + "dependencies" : [ "orderRepository", "pricingService", "inventoryService", "notificationService", "auditService" ] + }, { + "beanName" : "orderRepository", + "outDegree" : 4, + "dependencies" : [ "jpa.named-queries#0", "jpa.OrderRepository.fragments#0", "jpaSharedEM_entityManagerFactory", "jpaMappingContext" ] + }, { + "beanName" : "notificationService", + "outDegree" : 2, + "dependencies" : [ "auditService", "asyncMailer" ] + }, { + "beanName" : "catalogCacheWarmer", + "outDegree" : 1, + "dependencies" : [ "pricingService" ] + }, { + "beanName" : "inventoryService", + "outDegree" : 1, + "dependencies" : [ "auditService" ] + }, { + "beanName" : "legacyExportService", + "outDegree" : 1, + "dependencies" : [ "legacyImportService" ] + }, { + "beanName" : "legacyImportService", + "outDegree" : 1, + "dependencies" : [ "legacyExportService" ] + }, { + "beanName" : "orderController", + "outDegree" : 1, + "dependencies" : [ "orderService" ] + }, { + "beanName" : "pricingService", + "outDegree" : 1, + "dependencies" : [ "auditService" ] + } ], + "unstable" : [ { + "beanName" : "orderService", + "instability" : 0.83, + "fanIn" : 1, + "fanOut" : 5 + }, { + "beanName" : "orderRepository", + "instability" : 0.8, + "fanIn" : 1, + "fanOut" : 4 + } ], + "frameworkFiltered" : true, + "fanIn" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : 1, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : 2, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : 1, + "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : 2, + "healthEndpointGroups" : 3, + "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" : 1, + "webEndpointDiscoverer" : 3, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : 1, + "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" : 1, + "jdbcTemplate" : 1, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : 4, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : 8, + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : 1, + "openEntityManagerInViewInterceptor" : 1, + "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration" : 2, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : 1, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : 1, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : 1, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : 3, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : 1, + "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties" : 2, + "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" : 1, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" : 26, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : 1, + "entityManagerFactoryBuilder" : 1, + "pricingService" : 2, + "dataSourceScriptDatabaseInitializer" : 4, + "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" : 2, + "(inner bean)#4e41b993" : 1, + "endpointMediaTypes" : 2, + "jacksonMixinModuleEntries" : 1, + "springSecurityFilterChain" : 2, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : 2, + "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" : 1, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : 1, + "endpointJsonMapper" : 1, + "enableGlobalAuthenticationAutowiredConfigurer" : 1, + "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : 1, + "jsonMapperBuilder" : 1, + "repositoryTagsProvider" : 1, + "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" : 1, + "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" : 1, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : 1, + "dbHealthContributor" : 1, + "jpa.OrderRepository.fragments#0" : 1, + "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" : 3, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : 3, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : 1, + "jpa.named-queries#0" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : 5, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : 1, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : 3, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : 1, + "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" : 2, + "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" : 1, + "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" : 1, + "transactionInterceptor" : 1, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : 3, + "simpleMeterRegistry" : 3, + "entityManagerFactory" : 1, + "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" : 3, + "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" : 1, + "wireDoctorGhostTracker" : 2, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" : 3, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : 7, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : 1, + "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" : 2, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : 1, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : 1, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : 1, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" : 6, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : 1, + "requestMappingHandlerAdapter" : 1, + "wiredoctor-com.wiredoctor.WireDoctorProperties" : 2, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : 2, + "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" : 3, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : 1, + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : 1, + "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : 1, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration" : 1, + "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : 1, + "endpointOperationParameterMapper" : 1, + "orderService" : 1, + "jpaVendorAdapter" : 1, + "sslBundleRegistry" : 2, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : 4, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : 1, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : 1, + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" : 1, + "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" : 2, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : 3, + "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : 1, + "fileWatcher" : 1, + "springDataWebSettings" : 2, + "mvcContentNegotiationManager" : 6, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : 2, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : 1, + "environment" : 10, + "errorAttributes" : 1, + "asyncMailer" : 1, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : 2, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : 1, + "notificationService" : 1, + "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" : 11, + "org.springframework.data.web.config.SpringDataJacksonConfiguration" : 2, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : 1, + "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : 1, + "healthContributorRegistry" : 3, + "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" : 1, + "orderRepository" : 1, + "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration" : 1, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : 1, + "jackson2EndpointJsonMapper" : 1, + "persistenceManagedTypes" : 1, + "micrometerClock" : 2, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : 1, + "legacyExportService" : 1, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : 2, + "demoSecurityConfig" : 1, + "jacksonJsonMapper" : 1, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : 1, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : 1, + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : 2, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" : 2, + "endpointJsonMapperWebMvcConfigurer" : 1, + "auditService" : 4, + "jsonFactory" : 1, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : 4, + "livenessStateHealthIndicator" : 1, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : 1, + "servletEndpointDiscoverer" : 3, + "mvcValidator" : 1, + "applicationAvailability" : 2, + "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" : 1, + "mvcResourceUrlProvider" : 7, + "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : 2, + "sslInfo" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : 1, + "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" : 2, + "dispatcherServlet" : 1, + "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" : 4, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : 3, + "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" : 1, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : 2, + "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" : 6, + "demoChain" : 1, + "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" : 3, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : 2, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : 1, + "threadPoolTaskExecutorBuilder" : 1, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : 1, + "inventoryService" : 1, + "(inner bean)#394e0104" : 1, + "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" : 20, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : 1, + "transactionAttributeSource" : 2, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : 1, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : 1, + "org.springframework.data.web.config.SpringDataWebConfiguration" : 4, + "legacyImportService" : 1, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : 1, + "transactionManager" : 1, + "org.springframework.data.web.config.SpringDataJackson3Configuration" : 2, + "propertiesEndpointAccessResolver" : 3, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : 1, + "mvcConversionService" : 9, + "endpointJackson2ObjectMapperWebMvcConfigurer" : 1, + "initializeAuthenticationProviderBeanManagerConfigurer" : 1, + "openEntityManagerInViewInterceptorConfigurer" : 1, + "controllerEndpointDiscoverer" : 3, + "diskSpaceHealthIndicator" : 1, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : 3, + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : 1, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" : 1, + "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" : 2, + "pingHealthContributor" : 1, + "dispatcherServletRegistration" : 4, + "dataSource" : 3, + "sslHealthIndicator" : 1, + "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" : 6, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" : 1, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : 1, + "com.wiredoctor.WireDoctorAutoConfiguration" : 1, + "jpaMappingContext" : 1, + "groupsHealthContributorNameValidator" : 1, + "mvcApiVersionStrategy" : 2, + "namedParameterJdbcTemplate" : 1, + "jdbcConnectionDetails" : 1, + "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" : 5, + "initializeUserDetailsBeanManagerConfigurer" : 1, + "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" : 4, + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : 1, + "simpleConfig" : 1, + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : 1, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : 1, + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration" : 1, + "observationRegistry" : 2, + "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" : 1, + "readinessStateHealthIndicator" : 1, + "jpaSharedEM_entityManagerFactory" : 1, + "objectPostProcessor" : 4, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : 1, + "templateEngine" : 1, + "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" : 1 + } + }, + "dependencies" : { + "totalBeans" : 429, + "totalEdges" : 436, + "cyclesCount" : 1, + "cycles" : [ [ "legacyImportService", "legacyExportService" ] ], + "orphanBeansCount" : 3, + "orphanBeans" : [ "archivedReportExporter", "catalogCacheWarmer", "orderController" ], + "graph" : { + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : [ ], + "wireDoctorGhostTrackingPostProcessor" : [ "wireDoctorGhostTracker", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "environment" ], + "applicationTaskExecutor" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration", "threadPoolTaskExecutorBuilder" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : [ ], + "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" : [ ], + "healthEndpointGroups" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : [ ], + "hikariDataSourceMeterBinder" : [ "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" ], + "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" : [ ], + "jdbcTemplate" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration", "dataSource", "spring.jdbc-org.springframework.boot.jdbc.autoconfigure.JdbcProperties" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" ], + "webEndpointPathMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : [ ], + "org.springframework.context.annotation.internalConfigurationAnnotationProcessor" : [ "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" ], + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : [ ], + "openEntityManagerInViewInterceptor" : [ "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" ], + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : [ ], + "beanNameViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" ], + "pathPatternRequestMatcherBuilder" : [ "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration", "dispatcherServletRegistration" ], + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : [ "spring.data.web-org.springframework.boot.data.autoconfigure.web.DataWebProperties" ], + "viewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : [ ], + "projectingArgumentResolverBeanPostProcessor" : [ ], + "tomcatServletWebServerFactoryCustomizer" : [ "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration", "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" ], + "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" : [ ], + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : [ "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "pricingService" : [ "auditService" ], + "dataSourceScriptDatabaseInitializer" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration", "dataSource", "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" ], + "applicationTaskExecutorAsyncConfigurer" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "meterRegistryPostProcessor" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "endpointMediaTypes" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "jacksonMixinModuleEntries" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "jvmCompilationMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "orderController" : [ "orderService" ], + "jdbcConnectionDetailsHikariBeanPostProcessor" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : [ ], + "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" : [ ], + "repositoryTagsProvider" : [ "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" ], + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration" : [ ], + "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" : [ ], + "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" : [ ], + "org.springframework.boot.context.internalConfigurationPropertiesBinder" : [ ], + "dbHealthContributor" : [ "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" ], + "dataSourcePoolMetadataMeterBinder" : [ "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration" : [ ], + "jpa.OrderRepository.fragments#0" : [ ], + "catalogCacheWarmer" : [ "pricingService" ], + "webServerFactoryCustomizerBeanPostProcessor" : [ ], + "controllerEndpointHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "controllerEndpointDiscoverer", "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "propertiesEndpointAccessResolver" ], + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : [ ], + "jdbcClient" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration", "namedParameterJdbcTemplate" ], + "observabilitySchedulingConfigurer" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration", "observationRegistry" ], + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : [ ], + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration" : [ ], + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : [ ], + "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" : [ ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : [ ], + "conventionErrorViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" ], + "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" : [ ], + "org.springframework.context.event.internalEventListenerProcessor" : [ ], + "wireDoctorGhostTracker" : [ "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" : [ "spring.web-org.springframework.boot.autoconfigure.web.WebProperties", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "formContentFilter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : [ ], + "defaultViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter" ], + "routerFunctionMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "mvcResourceUrlProvider", "mvcApiVersionStrategy" ], + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" : [ "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : [ ], + "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" : [ ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : [ ], + "healthEndpointWebExtension" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration", "healthContributorRegistry", "healthEndpointGroups", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration" : [ ], + "multipartResolver" : [ "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : [ ], + "conversionServicePostProcessor" : [ ], + "requestMappingHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager", "mvcApiVersionStrategy", "mvcConversionService", "mvcResourceUrlProvider" ], + "webExposeExcludePropertyEndpointFilter" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "lifecycleProcessor" : [ "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration", "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" : [ ], + "org.springframework.aop.config.internalAutoProxyCreator" : [ ], + "requestMappingHandlerAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager", "mvcConversionService", "mvcValidator" ], + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : [ ], + "tomcatMetricsBinder" : [ "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration", "simpleMeterRegistry" ], + "wiredoctor-com.wiredoctor.WireDoctorProperties" : [ ], + "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" : [ ], + "mvcHandlerMappingIntrospector" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" : [ ], + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : [ ], + "org.springframework.data.jpa.repository.support.JpaEvaluationContextExtension" : [ ], + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : [ ], + "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" : [ ], + "sslMeterBinder" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration", "sslBundleRegistry" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : [ ], + "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" : [ ], + "org.springframework.context.annotation.internalAutowiredAnnotationProcessor" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$BootstrapExecutorConfiguration" : [ ], + "orderService" : [ "orderRepository", "pricingService", "inventoryService", "notificationService", "auditService" ], + "metricsRepositoryMethodInvocationListenerBeanPostProcessor" : [ ], + "classLoaderMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" : [ ], + "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration" : [ "objectPostProcessor", "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration", "mvcContentNegotiationManager" ], + "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" : [ ], + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties" ], + "org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory" : [ ], + "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration" : [ ], + "fileWatcher" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" ], + "springDataWebSettings" : [ "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" ], + "sortResolver" : [ "org.springframework.data.web.config.SpringDataWebConfiguration" ], + "stringHttpMessageConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", "spring.http.converters-org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersProperties" ], + "springSecurityPathPatternParserBeanDefinitionRegistryPostProcessor" : [ ], + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : [ "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" ], + "standardJsonMapperBuilderCustomizer" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "thymeleafViewResolver" : [ "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration", "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties", "templateEngine" ], + "errorAttributes" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" ], + "beanNameHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "mvcResourceUrlProvider" ], + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : [ "spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties" ], + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : [ ], + "delegatingApplicationListener" : [ ], + "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" : [ ], + "org.springframework.data.web.config.SpringDataJacksonConfiguration" : [ "springDataWebSettings" ], + "flashMapManager" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration" : [ "simpleMeterRegistry" ], + "orderRepository" : [ "jpa.named-queries#0", "jpa.OrderRepository.fragments#0", "jpaSharedEM_entityManagerFactory", "jpaMappingContext" ], + "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration" : [ ], + "jackson2EndpointJsonMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" ], + "requestMatcherProvider" : [ "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration", "dispatcherServletRegistration" ], + "legacyExportService" : [ "legacyImportService" ], + "healthHttpCodeStatusMapper" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : [ ], + "metricsRepositoryMethodInvocationListener" : [ "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration", "repositoryTagsProvider" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" : [ "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" ], + "uptimeMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" ], + "controllerExposeExcludePropertyEndpointFilter" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "pathMappedEndpoints" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "servletEndpointDiscoverer", "webEndpointDiscoverer", "controllerEndpointDiscoverer" ], + "jvmThreadMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "auditService" : [ ], + "standardJsonFactoryBuilderCustomizer" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonJsonCustomizerConfiguration" ], + "org.springframework.data.web.config.ProjectingArgumentResolverRegistrar" : [ ], + "jsonFactory" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : [ ], + "managementServletContext" : [ "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" ], + "fileDescriptorMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" ], + "livenessStateHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "applicationAvailability" ], + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" : [ ], + "org.springframework.transaction.config.internalTransactionalEventListenerFactory" : [ ], + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : [ ], + "mvcValidator" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration" : [ ], + "applicationAvailability" : [ "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" ], + "defaultTemplateResolver" : [ "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" ], + "mvcResourceUrlProvider" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" : [ ], + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration" : [ ], + "sslInfo" : [ "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration", "sslBundleRegistry" ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" : [ "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" ], + "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" : [ ], + "servletEndpointRegistrar" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "servletEndpointDiscoverer", "dispatcherServletRegistration", "propertiesEndpointAccessResolver" ], + "archivedReportExporter" : [ ], + "org.springframework.boot.autoconfigure.AutoConfigurationPackages" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration" : [ ], + "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" : [ ], + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : [ "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration" : [ ], + "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" : [ ], + "jackson3pageModule" : [ "org.springframework.data.web.config.SpringDataJackson3Configuration" ], + "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" : [ ], + "hikariPoolDataSourceMetadataProvider" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" ], + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" : [ "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" ], + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : [ ], + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : [ ], + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : [ ], + "org.springframework.data.web.config.SpringDataWebConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "legacyImportService" : [ "legacyExportService" ], + "propertiesEndpointAccessResolver" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration", "environment" ], + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : [ ], + "errorPageRegistrarBeanPostProcessor" : [ ], + "mvcConversionService" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "initializeAuthenticationProviderBeanManagerConfigurer" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "endpointJackson2ObjectMapperWebMvcConfigurer" : [ "jackson2EndpointJsonMapper" ], + "org.springframework.context.annotation.internalPersistenceAnnotationProcessor" : [ ], + "controllerEndpointDiscoverer" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" ], + "org.springframework.boot.context.properties.BoundConfigurationProperties" : [ ], + "diskSpaceHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration", "management.health.diskspace-org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthIndicatorProperties" ], + "jvmMemoryMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : [ ], + "mvcPathMatcher" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "handlerExceptionResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager" ], + "basicErrorController" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration", "errorAttributes" ], + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration" : [ ], + "pingHealthContributor" : [ "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" ], + "sslHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration", "sslInfo", "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" ], + "healthEndpointGroupMembershipValidator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties", "healthContributorRegistry" ], + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" ], + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration" : [ ], + "groupsHealthContributorNameValidator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration" ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration" : [ ], + "jpaContext" : [ ], + "namedParameterJdbcTemplate" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration", "jdbcTemplate" ], + "simpleAsyncTaskExecutorBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration" ], + "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" : [ ], + "spelValueExpressionResolver" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" ], + "org.springframework.scheduling.config.internalAsyncAnnotationProcessor" : [ "org.springframework.scheduling.annotation.ProxyAsyncConfiguration" ], + "mvcViewResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager" ], + "simpleConfig" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration", "management.simple.metrics.export-org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleProperties" ], + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration" : [ ], + "requestDataValueProcessor" : [ "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration" ], + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : [ ], + "observationRegistry" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" ], + "mvcUriComponentsContributor" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "requestMappingHandlerAdapter" ], + "management.health.ssl-org.springframework.boot.health.autoconfigure.application.SslHealthIndicatorProperties" : [ ], + "webAccessPropertiesOperationFilter" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "propertiesEndpointAccessResolver" ], + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration" : [ ], + "readinessStateHealthIndicator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "applicationAvailability" ], + "jpaSharedEM_entityManagerFactory" : [ "entityManagerFactory" ], + "objectPostProcessor" : [ "org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "wiredoctorDemoApplication" : [ ], + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : [ ], + "jackson3GeoModule" : [ "org.springframework.data.web.config.SpringDataJackson3Configuration" ], + "templateEngine" : [ "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration", "spring.thymeleaf-org.springframework.boot.thymeleaf.autoconfigure.ThymeleafProperties" ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration" : [ ], + "spring.sql.init-org.springframework.boot.sql.autoconfigure.init.SqlInitializationProperties" : [ ], + "platformTransactionManagerCustomizers" : [ "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" ], + "securityFilterChainRegistration" : [ "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration", "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" ], + "data-jpa.repository-aot-processor#0" : [ ], + "endpointCachingOperationInvokerAdvisor" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration", "environment" ], + "defaultServletHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : [ "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" ], + "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : [ ], + "persistenceExceptionTranslationPostProcessor" : [ "environment" ], + "observationRegistryPostProcessor" : [ ], + "characterEncodingFilter" : [ "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration", "spring.servlet.encoding-org.springframework.boot.servlet.autoconfigure.ServletEncodingProperties" ], + "sortCustomizer" : [ "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" ], + "webEndpointDiscoverer" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration", "endpointOperationParameterMapper", "endpointMediaTypes" ], + "org.springframework.security.config.annotation.web.configuration.ObservationConfiguration" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" : [ ], + "preserveErrorControllerTargetClassPostProcessor" : [ ], + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : [ ], + "logbackMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" ], + "management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties" : [ ], + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : [ ], + "propertySourcesPlaceholderConfigurer" : [ ], + "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration" : [ "enableGlobalAuthenticationAutowiredConfigurer", "initializeUserDetailsBeanManagerConfigurer", "initializeAuthenticationProviderBeanManagerConfigurer", "objectPostProcessor" ], + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : [ ], + "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties" : [ ], + "methodValidationPostProcessor" : [ "environment" ], + "wireDoctorGhostReportWriter" : [ "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration", "wireDoctorGhostTracker", "wiredoctor-com.wiredoctor.WireDoctorProperties" ], + "jsonComponentModule" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" : [ "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", "org.springframework.data.web.config.SpringDataWebConfiguration", "openEntityManagerInViewInterceptorConfigurer", "org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration", "endpointJsonMapperWebMvcConfigurer", "endpointJackson2ObjectMapperWebMvcConfigurer" ], + "entityManagerFactoryBuilder" : [ "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration", "jpaVendorAdapter", "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e" ], + "org.springframework.context.event.internalEventListenerFactory" : [ ], + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration" : [ ], + "webSocketWebServerCustomizer" : [ "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" ], + "clientConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" ], + "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" : [ ], + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : [ "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties" ], + "springSecurityFilterChain" : [ "(inner bean)#4e41b993", "(inner bean)#394e0104" ], + "management.metrics.data-org.springframework.boot.data.autoconfigure.metrics.DataMetricsProperties" : [ ], + "healthStatusAggregator" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "endpointJsonMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" ], + "enableGlobalAuthenticationAutowiredConfigurer" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "mvcUrlPathHelper" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "jsonMapperBuilder" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", "jsonFactory" ], + "servletWebServerFactoryCustomizer" : [ "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration", "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" ], + "transactionTemplate" : [ "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration", "transactionManager" ], + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : [ ], + "inMemoryUserDetailsManager" : [ "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration", "spring.security-org.springframework.boot.security.autoconfigure.SecurityProperties" ], + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : [ ], + "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" : [ ], + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration" : [ ], + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : [ ], + "jpa.named-queries#0" : [ ], + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : [ ], + "filterChainDecoratorPostProcessor" : [ ], + "metricsObservationHandlerGroup" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" ], + "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" : [ "objectPostProcessor", "demoChain" ], + "spring.servlet.multipart-org.springframework.boot.servlet.autoconfigure.MultipartProperties" : [ ], + "transactionInterceptor" : [ "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration", "transactionAttributeSource" ], + "simpleMeterRegistry" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration", "simpleConfig", "micrometerClock" ], + "authenticationEventPublisher" : [ "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "bootstrapExecutorAliasPostProcessor" : [ ], + "entityManagerFactory" : [ "dataSourceScriptDatabaseInitializer", "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration", "entityManagerFactoryBuilder", "persistenceManagedTypes" ], + "startupTimeMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration", "simpleMeterRegistry" ], + "spring.security.filter-org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterProperties" : [ ], + "multipartConfigElement" : [ "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" ], + "requestContextFilter" : [ ], + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration" : [ ], + "pageableResolver" : [ "org.springframework.data.web.config.SpringDataWebConfiguration" ], + "availabilityProbesHealthEndpointGroupsPostProcessor" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration", "environment" ], + "localeResolver" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "handlerFunctionAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : [ ], + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" : [ ], + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration" : [ "environment" ], + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : [ ], + "jvmHeapPressureMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "welcomePageNotAcceptableHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "mvcConversionService", "mvcResourceUrlProvider" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration" : [ ], + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : [ ], + "endpointOperationParameterMapper" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" ], + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration" : [ ], + "sslBundleRegistry" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" ], + "spring.transaction-org.springframework.boot.transaction.autoconfigure.TransactionProperties" : [ ], + "jpaVendorAdapter" : [ "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" ], + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : [ "dataSource", "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties", "spring.jpa.hibernate-org.springframework.boot.hibernate.autoconfigure.HibernateProperties" ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration" : [ ], + "wireDoctorAnalyzer" : [ "com.wiredoctor.WireDoctorAutoConfiguration", "wiredoctor-com.wiredoctor.WireDoctorProperties" ], + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : [ ], + "jacksonGeoModule" : [ "org.springframework.data.web.config.SpringDataJacksonConfiguration" ], + "meterRegistryCloser" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "mvcContentNegotiationManager" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : [ ], + "httpRequestHandlerAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "asyncMailer" : [ ], + "org.springframework.aop.framework.autoproxy.defaultProxyConfig" : [ ], + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : [ ], + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration" : [ ], + "sslPropertiesSslBundleRegistrar" : [ "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration", "fileWatcher" ], + "org.springframework.context.annotation.internalCommonAnnotationProcessor" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : [ ], + "defaultMeterObservationHandler" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "micrometerClock", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" : [ ], + "notificationService" : [ "auditService", "asyncMailer" ], + "resourceHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcContentNegotiationManager", "mvcConversionService", "mvcResourceUrlProvider" ], + "simpleControllerHandlerAdapter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : [ ], + "simpleAsyncTaskSchedulerBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration" ], + "spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties" : [ ], + "healthContributorRegistry" : [ "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration", "livenessStateHealthIndicator", "readinessStateHealthIndicator", "diskSpaceHealthIndicator", "sslHealthIndicator", "pingHealthContributor", "dbHealthContributor", "groupsHealthContributorNameValidator" ], + "management.health.db-org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthIndicatorProperties" : [ ], + "org.springframework.transaction.config.internalTransactionAdvisor" : [ "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration", "transactionAttributeSource", "transactionInterceptor" ], + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : [ ], + "eagerJpaMetamodelCacheCleanup" : [ ], + "propertiesObservationFilter" : [ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" ], + "micrometerClock" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" ], + "persistenceManagedTypes" : [ "org.springframework.beans.factory.support.DefaultListableBeanFactory@5c3b6c6e", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : [ ], + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : [ "spring.jpa-org.springframework.boot.jpa.autoconfigure.JpaProperties" ], + "propertiesMeterFilter" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "demoSecurityConfig" : [ ], + "problemDetailJsonMapperBuilderCustomizer" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : [ ], + "jacksonJsonMapper" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", "jsonMapperBuilder" ], + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : [ ], + "endpointJsonMapperWebMvcConfigurer" : [ "endpointJsonMapper" ], + "diskSpaceMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "org.springframework.data.jpa.util.JpaMetamodelCacheCleanup" : [ ], + "servletEndpointDiscoverer" : [ "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "metricsHttpServerUriTagFilter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties", "management.metrics-org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties" ], + "eagerTaskExecutorMetrics" : [ ], + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration" : [ ], + "jacksonMixinModule" : [ "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JacksonMixinConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "jacksonMixinModuleEntries" ], + "privilegeEvaluator" : [ "springSecurityFilterChain", "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" ], + "healthEndpoint" : [ "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration", "healthContributorRegistry", "healthEndpointGroups", "management.endpoint.health-org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointProperties" ], + "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" : [ ], + "viewControllerHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "mvcConversionService", "mvcResourceUrlProvider" ], + "mvcPatternParser" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor" : [ ], + "dispatcherServlet" : [ "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" ], + "jvmInfoMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "spring.jackson-org.springframework.boot.jackson.autoconfigure.JacksonProperties" : [ ], + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : [ ], + "demoChain" : [ "demoSecurityConfig", "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity" ], + "webEndpointServletHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration", "webEndpointDiscoverer", "servletEndpointDiscoverer", "controllerEndpointDiscoverer", "endpointMediaTypes", "management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties", "environment" ], + "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor" : [ ], + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : [ ], + "threadPoolTaskExecutorBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration", "spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties" ], + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : [ ], + "processorMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" ], + "inventoryService" : [ "auditService" ], + "transactionAttributeSource" : [ "org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration" ], + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration" : [ ], + "transactionExecutionListeners" : [ "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" ], + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : [ ], + "serverConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : [ ], + "org.springframework.data.web.config.SpringDataJackson3Configuration" : [ "springDataWebSettings" ], + "transactionManager" : [ "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" ], + "errorPageCustomizer" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration", "dispatcherServletRegistration" ], + "openEntityManagerInViewInterceptorConfigurer" : [ "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration", "openEntityManagerInViewInterceptor" ], + "tomcatWebServerFactoryCustomizer" : [ "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration", "environment", "server-org.springframework.boot.web.server.autoconfigure.ServerProperties", "server.tomcat-org.springframework.boot.tomcat.autoconfigure.TomcatServerProperties", "spring.web-org.springframework.boot.autoconfigure.web.WebProperties" ], + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : [ ], + "authenticationManagerPostProcessor" : [ ], + "threadPoolTaskSchedulerBuilder" : [ "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration", "spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties" ], + "viewNameTranslator" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration" : [ ], + "server-org.springframework.boot.web.server.autoconfigure.ServerProperties" : [ ], + "dispatcherServletRegistration" : [ "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration", "dispatcherServlet", "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" ], + "pageableCustomizer" : [ "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" ], + "dataSource" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari", "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties", "jdbcConnectionDetails", "environment" ], + "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" : [ ], + "healthEndpointGroupsBeanPostProcessor" : [ ], + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : [ ], + "com.wiredoctor.WireDoctorAutoConfiguration" : [ ], + "jpaMappingContext" : [ ], + "tomcatServletWebServerFactory" : [ "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" ], + "mvcApiVersionStrategy" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration" ], + "error" : [ "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" ], + "webAuthorizationManagerPostProcessor" : [ ], + "jdbcConnectionDetails" : [ "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration", "spring.datasource-org.springframework.boot.jdbc.autoconfigure.DataSourceProperties" ], + "spring.mvc-org.springframework.boot.webmvc.autoconfigure.WebMvcProperties" : [ ], + "offsetResolver" : [ "org.springframework.data.web.config.SpringDataWebConfiguration" ], + "jvmGcMetrics" : [ "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" ], + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : [ ], + "initializeUserDetailsBeanManagerConfigurer" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "jacksonJsonHttpMessageConvertersCustomizer" : [ "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration", "jacksonJsonMapper" ], + "healthEndpointWebMvcHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration", "webEndpointDiscoverer", "healthEndpointGroups" ], + "defaultValidator" : [ "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "welcomePageHandlerMapping" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303", "mvcConversionService", "mvcResourceUrlProvider" ], + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration" : [ ], + "servletExposeExcludePropertyEndpointFilter" : [ "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration", "management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties" ], + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration" : [ ], + "authenticationManagerBuilder" : [ "org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration", "objectPostProcessor", "org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext@bcef303" ], + "webMvcObservationFilter" : [ "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration", "observationRegistry", "management.observations-org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties" ], + "securityDialect" : [ "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" ], + "pageModule" : [ "org.springframework.data.web.config.SpringDataJacksonConfiguration" ], + "webSecurityExpressionHandler" : [ "springSecurityFilterChain", "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration" ] + }, + "graphTruncated" : false + }, + "lazySuggestions" : [ { + "beanName" : "legacyExportService", + "breaksCycles" : [ 0 ], + "downstreamImpact" : 1 + }, { + "beanName" : "legacyImportService", + "breaksCycles" : [ 0 ], + "downstreamImpact" : 1 + } ], + "criticalPath" : { + "available" : true, + "totalMs" : 1169, + "percentOfReadiness" : 16.5, + "path" : [ { + "beanName" : "jackson2EndpointJsonMapper", + "ownMs" : 3, + "cumulativeMs" : 3 + }, { + "beanName" : "endpointJackson2ObjectMapperWebMvcConfigurer", + "ownMs" : 7, + "cumulativeMs" : 10 + }, { + "beanName" : "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration", + "ownMs" : 32, + "cumulativeMs" : 42 + }, { + "beanName" : "mvcContentNegotiationManager", + "ownMs" : 173, + "cumulativeMs" : 215 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration", + "ownMs" : 193, + "cumulativeMs" : 408 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.HttpSecurityConfiguration.httpSecurity", + "ownMs" : 341, + "cumulativeMs" : 749 + }, { + "beanName" : "demoChain", + "ownMs" : 387, + "cumulativeMs" : 1136 + }, { + "beanName" : "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration", + "ownMs" : 17, + "cumulativeMs" : 1153 + }, { + "beanName" : "webSecurityExpressionHandler", + "ownMs" : 16, + "cumulativeMs" : 1169 + } ], + "disclaimer" : "Instantiation-weighted approximation; parallel init and background threads are not modeled." + }, + "conditions" : { + "com.wiredoctor.WireDoctorAutoConfiguration" : { + "outcome" : "matched" + }, + "com.wiredoctor.WireDoctorAutoConfiguration$GhostTrackingConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.audit.AuditAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.boot.actuate.audit.AuditEventRepository; SearchStrategy: all) did not find any beans of type org.springframework.boot.actuate.audit.AuditEventRepository" + }, + "org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.context.ShutdownEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint the configured access for endpoint 'shutdown' is NONE" + }, + "org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration#endpointCachingOperationInvokerAdvisor" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration#endpointOperationParameterMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration#propertiesEndpointAccessResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.Jackson2EndpointAutoConfiguration#jackson2EndpointJsonMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration#endpointJsonMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#controllerEndpointDiscoverer" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#endpointMediaTypes" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#pathMappedEndpoints" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration#webEndpointDiscoverer" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration#servletEndpointDiscoverer" : { + "outcome" : "matched" + }, + "org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#buildInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnSingleCandidate (types: org.springframework.boot.info.BuildProperties; SearchStrategy: all) did not find any beans" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#envInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.env.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#gitInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnSingleCandidate (types: org.springframework.boot.info.GitProperties; SearchStrategy: all) did not find any beans" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#javaInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.java.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#osInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.os.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#processInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.process.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#sslInfo" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.ssl.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration#sslInfoContributor" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledInfoContributor management.info.ssl.enabled is not true" + }, + "org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.logging.LoggersEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint the configured access for endpoint 'heapdump' is NONE" + }, + "org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.sbom.SbomEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.startup.StartupEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$DifferentManagementContextConfiguration" : { + "outcome" : "notMatched", + "reason" : "Management Port actual port type (SAME) did not match required type (DIFFERENT)" + }, + "org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.application.admin.enabled=true) did not find property 'spring.application.admin.enabled'" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$JdkDynamicAutoProxyConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.aop.proxy-target-class=false) did not find property 'spring.aop.proxy-target-class'" + }, + "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingClass found unwanted class 'org.aspectj.weaver.Advice'" + }, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration#applicationAvailability" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration#defaultLifecycleProcessor" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "ResourceBundle did not find bundle with basename messages" + }, + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration#propertySourcesPlaceholderConfigurer" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration#buildProperties" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnResource did not find resource '${spring.info.build.location:classpath:META-INF/build-info.properties}'" + }, + "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration#gitProperties" : { + "outcome" : "notMatched", + "reason" : "GitResource did not find git info at classpath:git.properties" + }, + "org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" + }, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration#sslBundleRegistry" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$AsyncConfigurerWrapperConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.scheduling.annotation.AsyncConfigurer; SearchStrategy: all) did not find any beans of type org.springframework.scheduling.annotation.AsyncConfigurer" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration#simpleAsyncTaskExecutorBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration#simpleAsyncTaskExecutorBuilderVirtualThreads" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder; SearchStrategy: all) found beans of type 'org.springframework.boot.task.SimpleAsyncTaskExecutorBuilder' simpleAsyncTaskExecutorBuilder" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration#applicationTaskExecutor" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration#applicationTaskExecutorVirtualThreads" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnThreading did not find VIRTUAL" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorContextPropagationConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.context.ContextSnapshot'" + }, + "org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration#threadPoolTaskExecutorBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration#scheduledBeanLazyInitializationExcludeFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (names: org.springframework.scheduling.config.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.scheduling.config.internalScheduledAnnotationProcessor" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration#simpleAsyncTaskSchedulerBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration#simpleAsyncTaskSchedulerBuilderVirtualThreads" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder; SearchStrategy: all) found beans of type 'org.springframework.boot.task.SimpleAsyncTaskSchedulerBuilder' simpleAsyncTaskSchedulerBuilder" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (names: org.springframework.scheduling.config.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.scheduling.config.internalScheduledAnnotationProcessor" + }, + "org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration#threadPoolTaskSchedulerBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration#metricsRepositoryMethodInvocationListener" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.metrics.DataRepositoryMetricsAutoConfiguration#repositoryTagsProvider" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration#pageableCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration#sortCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.autoconfigure.web.DataWebAutoConfiguration#springDataWebSettings" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.data.jpa.autoconfigure.DataJpaRepositoriesAutoConfiguration#entityManagerFactoryBootstrapExecutorCustomizer" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.data.jpa.repositories.bootstrap-mode=deferred) did not find property 'spring.data.jpa.repositories.bootstrap-mode'" + }, + "org.springframework.boot.h2console.autoconfigure.H2ConsoleAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.h2.console.enabled=true) did not find property 'spring.h2.console.enabled'" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration#livenessStateHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.AvailabilityProbesAutoConfiguration#readinessStateHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthEndpoint" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthEndpointGroupMembershipValidator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthEndpointGroups" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthHttpCodeStatusMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointConfiguration#healthStatusAggregator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointReactiveWebExtensionConfiguration" : { + "outcome" : "notMatched", + "reason" : "did not find reactive web application classes" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointWebExtensionConfiguration#healthEndpointWebExtension" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration#livenessStateHealthIndicator" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.health.livenessstate.enabled=true) did not find property 'management.health.livenessstate.enabled'" + }, + "org.springframework.boot.health.autoconfigure.application.AvailabilityHealthContributorAutoConfiguration#readinessStateHealthIndicator" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.health.readinessstate.enabled=true) did not find property 'management.health.readinessstate.enabled'" + }, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.DiskSpaceHealthContributorAutoConfiguration#diskSpaceHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration#sslHealthIndicator" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.application.SslHealthContributorAutoConfiguration#sslInfo" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration#pingHealthContributor" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration" : { + "outcome" : "unconditional" + }, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration#healthContributorRegistry" : { + "outcome" : "matched" + }, + "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration$ReactiveHealthContributorRegistryConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'reactor.core.publisher.Flux'" + }, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.hibernate.autoconfigure.HibernateJpaConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.hibernate.autoconfigure.metrics.HibernateMetricsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.hibernate.orm.micrometer.HibernateMetrics'" + }, + "org.springframework.boot.http.converter.autoconfigure.GsonHttpMessageConvertersConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'com.google.gson.Gson'" + }, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration#stringHttpMessageConvertersCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration" : { + "outcome" : "notMatched", + "reason" : "AnyNestedCondition 0 matched 2 did not; NestedCondition on Jackson2HttpMessageConvertersConfiguration.PreferJackson2OrJacksonUnavailableCondition.JacksonUnavailable @ConditionalOnMissingBean (types: org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConvertersCustomizer; SearchStrategy: all) found beans of type 'org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConvertersCustomizer' jacksonJsonHttpMessageConvertersCustomizer; NestedCondition on Jackson2HttpMessageConvertersConfiguration.PreferJackson2OrJacksonUnavailableCondition.Jackson2Preferred @ConditionalOnProperty (spring.http.converters.preferred-json-mapper=jackson2) did not find property 'spring.http.converters.preferred-json-mapper'" + }, + "org.springframework.boot.http.converter.autoconfigure.Jackson2HttpMessageConvertersConfiguration$MappingJackson2XmlHttpMessageConverterConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'com.fasterxml.jackson.dataformat.xml.XmlMapper'" + }, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonJsonHttpMessageConverterConfiguration#jacksonJsonHttpMessageConvertersCustomizer" : { + "outcome" : "matched" + }, + "org.springframework.boot.http.converter.autoconfigure.JacksonHttpMessageConvertersConfiguration$JacksonXmlHttpMessageConverterConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'tools.jackson.dataformat.xml.XmlMapper'" + }, + "org.springframework.boot.http.converter.autoconfigure.JsonbHttpMessageConvertersConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'jakarta.json.bind.Jsonb'" + }, + "org.springframework.boot.http.converter.autoconfigure.KotlinSerializationHttpMessageConvertersConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required classes 'kotlinx.serialization.Serializable', 'kotlinx.serialization.json.Json'" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration#jacksonJsonMapper" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration#jsonFactory" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration#jsonMapperBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$CborConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'tools.jackson.dataformat.cbor.CBORMapper'" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$JsonProblemDetailsConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration$XmlConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'tools.jackson.dataformat.xml.XmlMapper'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$EmbeddedDatabaseConfiguration" : { + "outcome" : "notMatched", + "reason" : "EmbeddedDataSource spring.datasource.url is set" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration$PooledDataSourceConfiguration#jdbcConnectionDetails" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceCheckpointRestoreConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.crac.Resource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Dbcp2" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.commons.dbcp2.BasicDataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Generic" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.datasource.type) did not find property 'spring.datasource.type'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Hikari" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$OracleUcp" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required classes 'oracle.ucp.jdbc.PoolDataSourceImpl', 'oracle.jdbc.OracleConnection'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceConfiguration$Tomcat" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.tomcat.jdbc.pool.DataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceJmxConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.jmx.enabled=true) did not find property 'spring.jmx.enabled'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$CommonsDbcp2PoolDataSourceMetadataProviderConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.commons.dbcp2.BasicDataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$OracleUcpPoolDataSourceMetadataProviderConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required classes 'oracle.ucp.jdbc.PoolDataSource', 'oracle.jdbc.OracleConnection'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourcePoolMetadataProvidersConfiguration$TomcatDataSourcePoolMetadataProviderConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.tomcat.jdbc.pool.DataSource'" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration$JdbcTransactionManagerConfiguration#transactionManager" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: org.springframework.transaction.TransactionManager; SearchStrategy: all) found beans of type 'org.springframework.transaction.TransactionManager' transactionManager" + }, + "org.springframework.boot.jdbc.autoconfigure.JdbcClientAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.JdbcTemplateConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.JndiDataSourceAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.datasource.jndi-name) did not find property 'spring.datasource.jndi-name'" + }, + "org.springframework.boot.jdbc.autoconfigure.LazyConnectionDataSourceConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (spring.datasource.connection-fetch=lazy) did not find property 'spring.datasource.connection-fetch'" + }, + "org.springframework.boot.jdbc.autoconfigure.NamedParameterJdbcTemplateConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.XADataSourceAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.boot.jdbc.XADataSourceWrapper; SearchStrategy: all) did not find any beans of type org.springframework.boot.jdbc.XADataSourceWrapper" + }, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.health.DataSourceHealthContributorAutoConfiguration#dbHealthContributor" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$DataSourcePoolMetadataMetricsConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jdbc.autoconfigure.metrics.DataSourcePoolMetricsAutoConfiguration$HikariDataSourceMetricsConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#entityManagerFactory" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#entityManagerFactoryBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#jpaVendorAdapter" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration#transactionManager" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$JpaWebConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration$PersistenceManagedTypesConfiguration#persistenceManagedTypes" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryConfiguration" : { + "outcome" : "notMatched", + "reason" : "NoneNestedConditions 1 matched 1 did not; NestedCondition on CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.SingleInjectableMeterRegistry @ConditionalOnSingleCandidate (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found a single bean 'simpleMeterRegistry'; NestedCondition on CompositeMeterRegistryConfiguration.MultipleNonPrimaryMeterRegistriesCondition.NoMeterRegistryCondition @ConditionalOnMissingBean (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found beans of type 'io.micrometer.core.instrument.MeterRegistry' simpleMeterRegistry" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAspectsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.observations.annotations.enabled=true) did not find property 'management.observations.annotations.enabled'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration#micrometerClock" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.MetricsEndpointAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.NoOpMeterRegistryConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found beans of type 'io.micrometer.core.instrument.MeterRegistry' simpleMeterRegistry" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.appoptics.AppOpticsMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.appoptics.AppOpticsMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.atlas.AtlasMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.atlas.AtlasMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.datadog.DatadogMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.datadog.DatadogMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.dynatrace.DynatraceMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.dynatrace.DynatraceMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.elastic.ElasticMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.elastic.ElasticMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.ganglia.GangliaMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.ganglia.GangliaMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.graphite.GraphiteMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.graphite.GraphiteMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.humio.HumioMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.humio.HumioMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.influx.InfluxMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.influx.InfluxMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.jmx.JmxMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.jmx.JmxMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.kairos.KairosMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.kairos.KairosMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.newrelic.NewRelicMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.newrelic.NewRelicMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.otlp.OtlpMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.registry.otlp.OtlpMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.prometheus.PrometheusMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.prometheusmetrics.PrometheusMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration#simpleConfig" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.stackdriver.StackdriverMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.stackdriver.StackdriverMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.export.statsd.StatsdMetricsExportAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.statsd.StatsdMeterRegistry'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#classLoaderMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmCompilationMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmGcMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmHeapPressureMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmInfoMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmMemoryMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration#jvmThreadMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration$VirtualThreadMetricsConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'io.micrometer.java21.instrument.binder.jdk.VirtualThreadMetrics'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.log4j2.Log4J2MetricsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.apache.logging.log4j.core.LoggerContext'" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration#logbackMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration#startupTimeMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#diskSpaceMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#fileDescriptorMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#processorMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration#uptimeMetrics" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration#observationRegistry" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration#spelValueExpressionResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration$ObservedAspectConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.observations.annotations.enabled=true) did not find property 'management.observations.annotations.enabled'" + }, + "org.springframework.boot.micrometer.observation.autoconfigure.ScheduledTasksObservationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.persistence.autoconfigure.PersistenceExceptionTranslationAutoConfiguration#persistenceExceptionTranslationPostProcessor" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.ReactiveUserDetailsServiceAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "AnyNestedCondition 0 matched 2 did not; NestedCondition on ReactiveUserDetailsServiceAutoConfiguration.RSocketEnabledOrReactiveWebApplication.ReactiveWebApplicationCondition did not find reactive web application classes; NestedCondition on ReactiveUserDetailsServiceAutoConfiguration.RSocketEnabledOrReactiveWebApplication.RSocketSecurityEnabledCondition @ConditionalOnBean (types: org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler; SearchStrategy: all) did not find any beans of type org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler" + }, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration#authenticationEventPublisher" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration$SecurityDataConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.springframework.security.data.repository.query.SecurityEvaluationContextExtension'" + }, + "org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.reactive.ReactiveManagementWebSecurityAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnWebApplication did not find reactive web application classes" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.ManagementWebSecurityAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "AllNestedConditions 1 matched 1 did not; NestedCondition on DefaultWebSecurityCondition.Beans @ConditionalOnMissingBean (types: org.springframework.security.web.SecurityFilterChain; SearchStrategy: all) found beans of type 'org.springframework.security.web.SecurityFilterChain' demoChain; NestedCondition on DefaultWebSecurityCondition.Classes @ConditionalOnClass found required classes 'org.springframework.security.web.SecurityFilterChain', 'org.springframework.security.config.annotation.web.builders.HttpSecurity'" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$JerseyRequestMatcherConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.glassfish.jersey.server.ResourceConfig'" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.actuate.web.servlet.SecurityRequestMatchersManagementContextConfiguration$MvcRequestMatcherConfiguration#requestMatcherProvider" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.rsocket.RSocketSecurityAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'org.springframework.boot.rsocket.server.RSocketServerCustomizer'" + }, + "org.springframework.boot.security.autoconfigure.web.reactive.ReactiveWebSecurityAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'reactor.core.publisher.Flux'" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.SecurityFilterAutoConfiguration#securityFilterChainRegistration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$PathPatternRequestMatcherBuilderConfiguration#pathPatternRequestMatcherBuilder" : { + "outcome" : "matched" + }, + "org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$SecurityFilterChainConfiguration" : { + "outcome" : "notMatched", + "reason" : "AllNestedConditions 1 matched 1 did not; NestedCondition on DefaultWebSecurityCondition.Beans @ConditionalOnMissingBean (types: org.springframework.security.web.SecurityFilterChain; SearchStrategy: all) found beans of type 'org.springframework.security.web.SecurityFilterChain' demoChain; NestedCondition on DefaultWebSecurityCondition.Classes @ConditionalOnClass found required classes 'org.springframework.security.web.SecurityFilterChain', 'org.springframework.security.config.annotation.web.builders.HttpSecurity'" + }, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.HttpEncodingAutoConfiguration#characterEncodingFilter" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration#multipartConfigElement" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.MultipartAutoConfiguration#multipartResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletEndpointManagementContextConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration$ApplicationContextFilterConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (management.server.add-application-context-header=true) did not find property 'management.server.add-application-context-header'" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.exchanges.ServletHttpExchangesAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository; SearchStrategy: all) did not find any beans of type org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository" + }, + "org.springframework.boot.servlet.autoconfigure.actuate.web.mappings.ServletMappingsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$DefaultTemplateEngineConfiguration#templateEngine" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.TemplateEngineConfigurations$ReactiveTemplateEngineConfiguration" : { + "outcome" : "notMatched", + "reason" : "did not find reactive web application classes" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DataAttributeDialectConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'com.github.mxab.thymeleaf.extras.dataattribute.dialect.DataAttributeDialect'" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafSecurityDialectConfiguration#securityDialect" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebFluxConfiguration" : { + "outcome" : "notMatched", + "reason" : "did not find reactive web application classes" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebLayoutConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnClass did not find required class 'nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect'" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration#resourceUrlEncodingFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledResourceChain did not find class org.webjars.WebJarVersionLocator" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration$ThymeleafWebMvcConfiguration$ThymeleafViewResolverConfiguration#thymeleafViewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration#tomcatVirtualThreadsProtocolHandlerCustomizer" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnThreading did not find VIRTUAL" + }, + "org.springframework.boot.tomcat.autoconfigure.TomcatWebServerConfiguration$TomcatWebSocketConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.actuate.web.server.TomcatReactiveManagementContextAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnWebApplication did not find reactive web application classes" + }, + "org.springframework.boot.tomcat.autoconfigure.actuate.web.server.TomcatServletManagementContextAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "Management Port actual port type (SAME) did not match required type (DIFFERENT)" + }, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.metrics.TomcatMetricsAutoConfiguration#tomcatMetricsBinder" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.reactive.TomcatReactiveWebServerAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnWebApplication did not find reactive web application classes" + }, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration#tomcatForwardedHeaderFilterCustomizer" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (server.forward-headers-strategy=framework) did not find property 'server.forward-headers-strategy'" + }, + "org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration#tomcatServletWebServerFactory" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration#transactionalOperator" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnSingleCandidate (types: org.springframework.transaction.ReactiveTransactionManager; SearchStrategy: all) did not find any beans" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$AspectJTransactionManagementConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.transaction.aspectj.AbstractTransactionAspect; SearchStrategy: all) did not find any beans of type org.springframework.transaction.aspectj.AbstractTransactionAspect" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$CglibAutoProxyConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$EnableTransactionManagementConfiguration$JdkDynamicAutoProxyConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.aop.proxy-target-class=false) did not find property 'spring.aop.proxy-target-class'" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration$TransactionTemplateConfiguration#transactionTemplate" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizationAutoConfiguration#platformTransactionManagerCustomizers" : { + "outcome" : "matched" + }, + "org.springframework.boot.transaction.jta.autoconfigure.JndiJtaConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnJndi JNDI environment is not available" + }, + "org.springframework.boot.transaction.jta.autoconfigure.JtaAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration#defaultValidator" : { + "outcome" : "matched" + }, + "org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration#methodValidationPostProcessor" : { + "outcome" : "matched" + }, + "org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration#forwardedHeaderFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnProperty (server.forward-headers-strategy=framework) did not find property 'server.forward-headers-strategy'" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletConfiguration#multipartResolver" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBean (types: org.springframework.web.multipart.MultipartResolver; SearchStrategy: all) did not find any beans of type org.springframework.web.multipart.MultipartResolver" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration#dispatcherServletRegistration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration#formContentFilter" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration#hiddenHttpMethodFilter" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.mvc.hiddenmethod.filter.enabled=true) did not find property 'spring.mvc.hiddenmethod.filter.enabled'" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration#flashMapManager" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration#localeResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$EnableWebMvcConfiguration#viewNameTranslator" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$ProblemDetailsErrorHandlingConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnBooleanProperty (spring.mvc.problemdetails.enabled=true) did not find property 'spring.mvc.problemdetails.enabled'" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$ResourceChainCustomizerConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnEnabledResourceChain did not find class org.webjars.WebJarVersionLocator" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#beanNameViewResolver" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnMissingBean (types: org.springframework.web.servlet.view.BeanNameViewResolver; SearchStrategy: all) found beans of type 'org.springframework.web.servlet.view.BeanNameViewResolver' beanNameViewResolver" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#defaultViewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#requestContextFilter" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter#viewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration#webMvcObservationFilter" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.WebMvcObservationAutoConfiguration$MeterFilterConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.endpoint.web.WebMvcHealthEndpointExtensionAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#controllerEndpointHandlerMapping" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#endpointJackson2ObjectMapperWebMvcConfigurer" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#endpointJsonMapperWebMvcConfigurer" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration#webEndpointServletHandlerMapping" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.WebMvcEndpointManagementContextConfiguration$HealthConfiguration#managementHealthEndpointWebMvcHandlerMapping" : { + "outcome" : "notMatched", + "reason" : "Management Port actual port type (SAME) did not match required type (DIFFERENT)" + }, + "org.springframework.boot.webmvc.autoconfigure.actuate.web.mappings.WebMvcMappingsAutoConfiguration" : { + "outcome" : "notMatched", + "reason" : "@ConditionalOnAvailableEndpoint not exposed" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration#basicErrorController" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration#errorAttributes" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration#conventionErrorViewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration#beanNameViewResolver" : { + "outcome" : "matched" + }, + "org.springframework.boot.webmvc.autoconfigure.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration#defaultErrorView" : { + "outcome" : "matched" + } + }, + "gates" : { + "baselineConfigured" : true, + "mode" : "diff", + "armed" : [ ], + "config" : { + "startupTimeAbsoluteThresholdMs" : 500, + "startupTimeRelativePercent" : 20.0, + "slowBeanThresholdMs" : 100, + "slowBeanMarginMs" : 20 + }, + "baseline" : "wiredoctor-baseline.json", + "failed" : [ ], + "startupTime" : { + "baselineMs" : 7210, + "currentMs" : 7067, + "deltaMs" : -143, + "percentChange" : -1.9833564493758666 + } + }, + "trendHistory" : [ { + "timestamp" : 1787595868889, + "totalStartupMs" : 6747, + "slowBeanCount" : 13, + "beanCount" : 429 + }, { + "timestamp" : 1787595880167, + "totalStartupMs" : 7100, + "slowBeanCount" : 15, + "beanCount" : 429 + }, { + "timestamp" : 1787595891310, + "totalStartupMs" : 7210, + "slowBeanCount" : 14, + "beanCount" : 429 + } ] +} \ No newline at end of file diff --git a/tools/capture-media.js b/tools/capture-media.js new file mode 100644 index 0000000..76cfc03 --- /dev/null +++ b/tools/capture-media.js @@ -0,0 +1,213 @@ +#!/usr/bin/env node +/* + * Captures every screenshot, GIF and video that README.md and docs/ embed, + * straight out of a real generated wiredoctor-report.html — so the media can + * never drift from what the report actually renders. + * + * npm i --no-save playwright gifenc pngjs + * node tools/capture-media.js [outDir] + * + * outDir defaults to docs/images. PNGs keep the filenames the docs already + * reference, so refreshing them needs no markdown edits. + * + * GIFs are built by screenshotting the page while a scripted tour drives it, + * then encoding those frames directly — Playwright's bundled ffmpeg has no GIF + * muxer, and requiring a system ffmpeg for a docs refresh is not worth it. + */ +const fs = require('fs'); +const path = require('path'); +const os = require('os'); +const { chromium } = require('playwright'); +const { GIFEncoder, quantize, applyPalette } = require('gifenc'); +const { PNG } = require('pngjs'); + +const reportArg = process.argv[2]; +const outDir = path.resolve(process.argv[3] || path.join(__dirname, '..', 'docs', 'images')); +if (!reportArg) { + console.error('usage: node tools/capture-media.js [outDir]'); + process.exit(2); +} +const reportUrl = 'file://' + path.resolve(reportArg); +fs.mkdirSync(outDir, { recursive: true }); + +const VIEWPORT = { width: 1440, height: 940 }; +const GRAPH_SETTLE_MS = 3500; + +/* One entry per PNG the docs embed. `open` runs inside the page; `full` + captures the whole scroll height, for tabs whose charts sit below the fold. */ +const SHOTS = [ + { name: 'overview.png', tab: 'overview', full: true }, + { + name: 'cycle-detection.png', tab: 'graph', + open: () => focusBean('legacyImportService'), + }, + { + name: 'graph-focus.png', tab: 'graph', + open: () => focusBean('orderService'), + }, + { name: 'ghosts.png', tab: 'ghosts' }, + { name: 'smells.png', tab: 'smells' }, + { name: 'timing.png', tab: 'timing', full: true }, + { name: 'conditions.png', tab: 'conditions' }, +]; + +/** Waits for the report script to have built its tabs. */ +async function ready(page) { + await page.waitForFunction(() => document.querySelectorAll('.nav-item').length > 0); +} + +/** Opens a tab and lets the graph settle when that tab draws one. */ +async function openTab(page, tab, open) { + await page.evaluate(t => activate(t), tab); + if (tab === 'graph') await page.waitForTimeout(GRAPH_SETTLE_MS); + if (open) { + await page.evaluate(open); + await page.waitForTimeout(1400); + } + await page.waitForTimeout(400); +} + +async function screenshots(browser) { + const page = await browser.newPage({ viewport: VIEWPORT, deviceScaleFactor: 2 }); + await page.goto(reportUrl, { waitUntil: 'load' }); + await ready(page); + for (const shot of SHOTS) { + await openTab(page, shot.tab, shot.open); + const file = path.join(outDir, shot.name); + if (shot.full) { + // The tab bodies scroll inside a fixed-height pane, so fullPage sees only + // the viewport. Grow the window to the pane's content height instead. + const h = await page.evaluate(t => { + const el = document.querySelector('#tab-' + t); + return Math.ceil(el.scrollHeight + 90); + }, shot.tab); + await page.setViewportSize({ width: VIEWPORT.width, height: Math.min(h, 6000) }); + await page.waitForTimeout(600); + } + await page.screenshot({ path: file }); + if (shot.full) await page.setViewportSize(VIEWPORT); + console.log('png ' + shot.name + ' ' + (fs.statSync(file).size / 1024).toFixed(0) + 'KB'); + } + await page.close(); +} + +/** + * Encodes captured frames as a GIF. One global palette keeps the file small — + * the report is flat UI colour, so 128 colours is plenty — and each frame keeps + * its real delay so the GIF plays at the speed the tour actually ran. + */ +function encodeGif(frames, file) { + const gif = GIFEncoder(); + let palette = null; + frames.forEach((frame, i) => { + const { data, width: w, height: h } = frame; + if (!palette) palette = quantize(data, 128); + const indexed = applyPalette(data, palette); + const delay = i + 1 < frames.length + ? Math.max(40, Math.round(frames[i + 1].t - frame.t)) + : 900; // hold the last frame before the loop restarts + gif.writeFrame(indexed, w, h, { palette: i === 0 ? palette : undefined, delay }); + }); + gif.finish(); + fs.writeFileSync(file, Buffer.from(gif.bytes())); +} + +/** Decodes a PNG screenshot to the RGBA buffer the encoder wants. */ +function decode(buffer) { + const png = PNG.sync.read(buffer); + return { data: new Uint8ClampedArray(png.data), width: png.width, height: png.height }; +} + +/** + * Drives the page through `steps` while screenshotting it, then writes the GIF. + * Screenshotting rather than recording video keeps the whole pipeline in-process + * and makes every frame a real rendered state instead of a re-encoded one. + */ +async function animate(browser, name, steps) { + // The GIF is whatever the viewport is — no resampling step, and 1000px keeps + // the desktop layout (the nav collapses into a drawer below 860px). + const page = await browser.newPage({ viewport: { width: 1000, height: 640 } }); + await page.goto(reportUrl, { waitUntil: 'load' }); + await ready(page); + await page.waitForTimeout(700); + + const frames = []; + let capturing = true; + const grab = (async () => { + while (capturing) { + const t = Date.now(); + let shot; + try { + shot = await page.screenshot({ type: 'png' }); + } catch { break; } // page closed mid-capture + const frame = decode(shot); + frame.t = t; + frames.push(frame); + await page.waitForTimeout(120); + } + })(); + + await steps(page); + capturing = false; + await grab; + + const file = path.join(outDir, name + '.gif'); + encodeGif(frames, file); + await page.close(); + console.log('gif ' + name + '.gif ' + (fs.statSync(file).size / 1024 / 1024).toFixed(2) + + 'MB ' + frames.length + ' frames'); +} + +const hold = (page, ms) => page.waitForTimeout(ms); +const go = async (page, tab, ms = 2000) => { + await page.evaluate(t => activate(t), tab); + await hold(page, tab === 'graph' ? GRAPH_SETTLE_MS : ms); +}; + +/* The README hero: one pass over every tab, ending on the cycle in the graph. */ +async function tourSteps(page) { + await hold(page, 1200); + await go(page, 'cycles', 2400); + await go(page, 'ghosts', 2600); + await go(page, 'smells', 2600); + await go(page, 'timing', 2800); + await go(page, 'graph'); + await page.evaluate(() => focusBean('legacyImportService')); + await hold(page, 2600); +} + +/* Search a bean, focus it, read the panel — the graph's actual workflow. */ +async function graphSteps(page) { + await go(page, 'graph'); + await page.fill('#g-search', 'orderService'); + await hold(page, 900); + await page.press('#g-search', 'Enter'); + await hold(page, 2600); + await page.evaluate(() => focusBean('auditService')); + await hold(page, 2600); +} + +/* The three charts the Timing tab draws, scrolled through in order. */ +async function timingSteps(page) { + await go(page, 'timing', 1800); + for (const y of [500, 1100, 1700, 2300]) { + await page.evaluate(top => { + const pane = document.querySelector('#tab-timing'); + (pane.scrollHeight > pane.clientHeight ? pane : document.scrollingElement).scrollTo({ top, behavior: 'smooth' }); + }, y); + await hold(page, 1500); + } +} + +(async () => { + const browser = await chromium.launch(); + try { + await screenshots(browser); + await animate(browser, 'report-tour', tourSteps); + await animate(browser, 'graph-drilldown', graphSteps); + await animate(browser, 'timing-charts', timingSteps); + } finally { + await browser.close(); + } + console.log('\nwrote to ' + outDir); +})(); diff --git a/wiredoctor-actuator/pom.xml b/wiredoctor-actuator/pom.xml index 09b85b0..53e5455 100644 --- a/wiredoctor-actuator/pom.xml +++ b/wiredoctor-actuator/pom.xml @@ -6,7 +6,7 @@ io.github.ddsha441981 wiredoctor-parent - 1.1.3 + 1.1.4 wiredoctor-actuator WireDoctor Actuator diff --git a/wiredoctor-autoconfigure/pom.xml b/wiredoctor-autoconfigure/pom.xml index 62aa840..bbfe760 100644 --- a/wiredoctor-autoconfigure/pom.xml +++ b/wiredoctor-autoconfigure/pom.xml @@ -6,7 +6,7 @@ io.github.ddsha441981 wiredoctor-parent - 1.1.3 + 1.1.4 wiredoctor-autoconfigure WireDoctor AutoConfiguration diff --git a/wiredoctor-autoconfigure/src/main/java/com/wiredoctor/WireDoctorAnalyzer.java b/wiredoctor-autoconfigure/src/main/java/com/wiredoctor/WireDoctorAnalyzer.java index 02e135a..ddeee03 100644 --- a/wiredoctor-autoconfigure/src/main/java/com/wiredoctor/WireDoctorAnalyzer.java +++ b/wiredoctor-autoconfigure/src/main/java/com/wiredoctor/WireDoctorAnalyzer.java @@ -790,34 +790,9 @@ private WireDoctorRegressionException runRegressionGuard(Map g // v1.1.0: append trend-history entry before writing the baseline try { int trendCap = properties.resolveTrendHistorySize(); - @SuppressWarnings("unchecked") + // Carry forward prior trend entries from the existing baseline java.util.List> trendHistory = - new java.util.ArrayList<>(); - // Read existing baseline to carry forward prior trend entries - if (baselineFile.isFile()) { - try { - JsonNode root = mapper.readTree(baselineFile); - JsonNode trendNode = root.path("trendHistory"); - if (trendNode.isArray()) { - for (JsonNode entry : trendNode) { - java.util.Map map = new java.util.LinkedHashMap<>(); - JsonNode ts = entry.get("timestamp"); - JsonNode ms = entry.get("totalStartupMs"); - JsonNode sb = entry.get("slowBeanCount"); - // v1.1.3: absent in pre-1.1.3 entries — carried - // forward only when present, never invented. - JsonNode bc = entry.get("beanCount"); - if (ts != null) map.put("timestamp", ts.asLong()); - if (ms != null) map.put("totalStartupMs", ms.asLong()); - if (sb != null) map.put("slowBeanCount", sb.asInt()); - if (bc != null) map.put("beanCount", bc.asInt()); - if (!map.isEmpty()) trendHistory.add(map); - } - } - } catch (Exception ignored) { - // Corrupt baseline trend section — start fresh - } - } + readTrendHistory(mapper, baselineFile); // Append current entry java.util.Map currentEntry = new java.util.LinkedHashMap<>(); currentEntry.put("timestamp", System.currentTimeMillis()); @@ -866,6 +841,17 @@ private WireDoctorRegressionException runRegressionGuard(Map g try { baselineJsonRoot = mapper.readTree(baselineFile); baseline = WireDoctorBaselineDiff.Snapshot.fromJson(baselineJsonRoot); + // v1.1.4: the trend chart reads reportData.trendHistory, and only a + // baseline-write run used to put it there — so the diff run you + // actually do day to day rendered an empty chart. The history lives + // in the baseline either way; hand it to the report here too. No + // current entry is appended: these are baseline entries, and this + // run is not one. + java.util.List> baselineTrend = + readTrendHistory(baselineJsonRoot); + if (!baselineTrend.isEmpty()) { + report.put("trendHistory", baselineTrend); + } } catch (Exception e) { gatesMap.put("mode", "baseline-unreadable"); // v0.7.1 log.warn(WireDoctorMessages.BASELINE_UNREADABLE, @@ -1205,4 +1191,60 @@ static String signed(long value) { static String oneDecimal(double value) { return String.format(Locale.ROOT, "%.1f", value); } + + /** + * Reads {@code trendHistory[]} out of a baseline file, tolerating a missing + * or unreadable file by returning an empty, mutable list. + * + * @param mapper the mapper to parse with + * @param baselineFile the baseline to read; may not exist + * @return the entries found, oldest first; never {@code null} + */ + private static java.util.List> readTrendHistory( + ObjectMapper mapper, File baselineFile) { + if (baselineFile == null || !baselineFile.isFile()) { + return new java.util.ArrayList<>(); + } + try { + return readTrendHistory(mapper.readTree(baselineFile)); + } catch (Exception ignored) { + // Unreadable baseline — start fresh rather than fail the run + return new java.util.ArrayList<>(); + } + } + + /** + * Reads {@code trendHistory[]} out of an already-parsed baseline document. + * Every field is copied only when present: entries written by older versions + * lack {@code beanCount}, and that gap is carried through rather than + * invented so the chart can say "unknown" instead of guessing. + * + * @param baselineRoot the parsed baseline document; may be {@code null} + * @return the entries found, oldest first; never {@code null} + */ + private static java.util.List> readTrendHistory(JsonNode baselineRoot) { + java.util.List> history = new java.util.ArrayList<>(); + if (baselineRoot == null) { + return history; + } + JsonNode trendNode = baselineRoot.path("trendHistory"); + if (!trendNode.isArray()) { + return history; + } + for (JsonNode entry : trendNode) { + java.util.Map map = new java.util.LinkedHashMap<>(); + JsonNode ts = entry.get("timestamp"); + JsonNode ms = entry.get("totalStartupMs"); + JsonNode sb = entry.get("slowBeanCount"); + // v1.1.3: absent in pre-1.1.3 entries — carried forward only when + // present, never invented. + JsonNode bc = entry.get("beanCount"); + if (ts != null) map.put("timestamp", ts.asLong()); + if (ms != null) map.put("totalStartupMs", ms.asLong()); + if (sb != null) map.put("slowBeanCount", sb.asInt()); + if (bc != null) map.put("beanCount", bc.asInt()); + if (!map.isEmpty()) history.add(map); + } + return history; + } } diff --git a/wiredoctor-autoconfigure/src/test/java/com/wiredoctor/WireDoctorAnalyzerIntegrationTest.java b/wiredoctor-autoconfigure/src/test/java/com/wiredoctor/WireDoctorAnalyzerIntegrationTest.java index cfceb99..e1a6aff 100644 --- a/wiredoctor-autoconfigure/src/test/java/com/wiredoctor/WireDoctorAnalyzerIntegrationTest.java +++ b/wiredoctor-autoconfigure/src/test/java/com/wiredoctor/WireDoctorAnalyzerIntegrationTest.java @@ -18,6 +18,7 @@ import org.springframework.context.annotation.Lazy; import java.io.File; +import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -309,6 +310,56 @@ void baselineWriteProducesTrendHistory(@TempDir Path tempDir) throws Exception { } } + // ── v1.1.4: the trend chart is fed on diff runs too ────────────────────── + + @Test + void diffRunPutsBaselineTrendHistoryOnTheReport(@TempDir Path tempDir) throws Exception { + // Two write runs build a two-entry history in the baseline... + for (int i = 0; i < 2; i++) { + try (ConfigurableApplicationContext ctx = boot( + "wiredoctor.output-path=" + tempDir, + "wiredoctor.baseline=" + tempDir.resolve("baseline.json"), + "wiredoctor.baseline-write=true")) { + assertThat(tempDir.resolve("baseline.json")).exists(); + } + } + // ...and the diff run that follows must hand that history to the report, + // or the Timing tab's trend chart is empty in the only mode most + // projects ever run. + try (ConfigurableApplicationContext ctx = boot( + "wiredoctor.output-path=" + tempDir, + "wiredoctor.baseline=" + tempDir.resolve("baseline.json"), + "wiredoctor.baseline-write=false")) { + JsonNode report = new ObjectMapper() + .readTree(tempDir.resolve("wiredoctor-report.json").toFile()); + JsonNode trend = report.path("trendHistory"); + assertThat(trend.isArray()).isTrue(); + // Exactly the baseline's entries: the current run is not a baseline + // entry and must not be appended as one. + assertThat(trend).hasSize(2); + trend.forEach(e -> { + assertThat(e.has("timestamp")).isTrue(); + assertThat(e.path("totalStartupMs").asLong()).isNotNegative(); + }); + } + } + + @Test + void diffRunWithoutTrendHistoryLeavesTheKeyOff(@TempDir Path tempDir) throws Exception { + // A baseline written before v1.1.0 has no trendHistory[] — the diff run + // must not invent an empty one. + Files.writeString(tempDir.resolve("baseline.json"), + "{\"dependencies\":{\"totalBeans\":1,\"graph\":{\"nodes\":[],\"edges\":[]}}}"); + try (ConfigurableApplicationContext ctx = boot( + "wiredoctor.output-path=" + tempDir, + "wiredoctor.baseline=" + tempDir.resolve("baseline.json"), + "wiredoctor.baseline-write=false")) { + JsonNode report = new ObjectMapper() + .readTree(tempDir.resolve("wiredoctor-report.json").toFile()); + assertThat(report.has("trendHistory")).isFalse(); + } + } + @Test void trendHistoryPreservesBeanCountAcrossWrites(@TempDir Path tempDir) throws Exception { for (int i = 0; i < 2; i++) { diff --git a/wiredoctor-test/pom.xml b/wiredoctor-test/pom.xml index 166a96b..884fba1 100644 --- a/wiredoctor-test/pom.xml +++ b/wiredoctor-test/pom.xml @@ -6,7 +6,7 @@ io.github.ddsha441981 wiredoctor-parent - 1.1.3 + 1.1.4 wiredoctor-test