diff --git a/framework-docs/antora.yml b/framework-docs/antora.yml
index 8cc3641a0d6..77c8360b982 100644
--- a/framework-docs/antora.yml
+++ b/framework-docs/antora.yml
@@ -72,6 +72,8 @@ asciidoc:
kotlin-coroutines-api: '{kotlin-site}/api/kotlinx.coroutines'
kotlin-github-org: 'https://github.com/Kotlin'
kotlin-issues: 'https://youtrack.jetbrains.com/issue'
+ micrometer-docs: 'https://docs.micrometer.io/micrometer/reference'
+ micrometer-context-propagation-docs: 'https://docs.micrometer.io/context-propagation/reference'
reactive-streams-site: 'https://www.reactive-streams.org'
reactive-streams-spec: 'https://github.com/reactive-streams/reactive-streams-jvm/blob/master/README.md#specification'
reactor-github-org: 'https://github.com/reactor'
@@ -89,4 +91,5 @@ asciidoc:
stackoverflow-questions: '{stackoverflow-site}/questions'
stackoverflow-spring-tag: "{stackoverflow-questions}/tagged/spring"
stackoverflow-spring-kotlin-tags: "{stackoverflow-spring-tag}+kotlin"
- testcontainers-site: 'https://www.testcontainers.org'
\ No newline at end of file
+ testcontainers-site: 'https://www.testcontainers.org'
+ vavr-docs: 'https://vavr-io.github.io/vavr-docs'
\ No newline at end of file
diff --git a/framework-docs/modules/ROOT/pages/core/beans/dependencies/factory-dependson.adoc b/framework-docs/modules/ROOT/pages/core/beans/dependencies/factory-dependson.adoc
index 17e5e98246b..bbc4c0ef20b 100644
--- a/framework-docs/modules/ROOT/pages/core/beans/dependencies/factory-dependson.adoc
+++ b/framework-docs/modules/ROOT/pages/core/beans/dependencies/factory-dependson.adoc
@@ -2,13 +2,14 @@
= Using `depends-on`
If a bean is a dependency of another bean, that usually means that one bean is set as a
-property of another. Typically you accomplish this with the <`
-element>> in XML-based configuration metadata. However, sometimes dependencies between
-beans are less direct. An example is when a static initializer in a class needs to be
-triggered, such as for database driver registration. The `depends-on` attribute can
-explicitly force one or more beans to be initialized before the bean using this element
-is initialized. The following example uses the `depends-on` attribute to express a
-dependency on a single bean:
+property of another. Typically you accomplish this with the
+xref:core/beans/dependencies/factory-properties-detailed.adoc#beans-ref-element[`` element>]
+in XML-based configuration metadata. However, sometimes dependencies between beans are
+less direct. An example is when a static initializer in a class needs to be triggered,
+such as for database driver registration. The `depends-on` attribute can explicitly force
+one or more beans to be initialized before the bean using this element is initialized.
+The following example uses the `depends-on` attribute to express a dependency on a single
+bean:
[source,xml,indent=0,subs="verbatim,quotes"]
----
diff --git a/framework-docs/modules/ROOT/pages/data-access/transaction/declarative/rolling-back.adoc b/framework-docs/modules/ROOT/pages/data-access/transaction/declarative/rolling-back.adoc
index 355365fb275..2dc529e919d 100644
--- a/framework-docs/modules/ROOT/pages/data-access/transaction/declarative/rolling-back.adoc
+++ b/framework-docs/modules/ROOT/pages/data-access/transaction/declarative/rolling-back.adoc
@@ -23,7 +23,7 @@ The default configuration also provides support for Vavr's `Try` method to trigg
transaction rollbacks when it returns a 'Failure'.
This allows you to handle functional-style errors using Try and have the transaction
automatically rolled back in case of a failure. For more information on Vavr's Try,
-refer to the https://docs.vavr.io/#_try[official Vavr documentation].
+refer to the {vavr-docs}/#_try[official Vavr documentation].
Here's an example of how to use Vavr's Try with a transactional method:
[tabs]
diff --git a/framework-docs/modules/ROOT/pages/integration/observability.adoc b/framework-docs/modules/ROOT/pages/integration/observability.adoc
index 64e5f230ddc..28fe88fdbc3 100644
--- a/framework-docs/modules/ROOT/pages/integration/observability.adoc
+++ b/framework-docs/modules/ROOT/pages/integration/observability.adoc
@@ -1,7 +1,7 @@
[[observability]]
= Observability Support
-Micrometer defines an https://micrometer.io/docs/observation[Observation concept that enables both Metrics and Traces] in applications.
+Micrometer defines an {micrometer-docs}/observation.html[Observation concept that enables both Metrics and Traces] in applications.
Metrics support offers a way to create timers, gauges, or counters for collecting statistics about the runtime behavior of your application.
Metrics can help you to track error rates, usage patterns, performance, and more.
Traces provide a holistic view of an entire system, crossing application boundaries; you can zoom in on particular user requests and follow their entire completion across applications.
@@ -38,7 +38,7 @@ As outlined xref:integration/observability.adoc[at the beginning of this section
|===
NOTE: Observations are using Micrometer's official naming convention, but Metrics names will be automatically converted
-https://micrometer.io/docs/concepts#_naming_meters[to the format preferred by the monitoring system backend]
+{micrometer-docs}/concepts/naming.html[to the format preferred by the monitoring system backend]
(Prometheus, Atlas, Graphite, InfluxDB...).
@@ -368,7 +368,7 @@ This means that during the execution of that task, the ThreadLocals and logging
If the application globally configures a custom `ApplicationEventMulticaster` with a strategy that schedules event processing on different threads, this is no longer true.
All `@EventListener` methods will be processed on a different thread, outside the main event publication thread.
-In these cases, the https://micrometer.io/docs/contextPropagation[Micrometer Context Propagation library] can help propagate such values and better correlate the processing of the events.
+In these cases, the {micrometer-context-propagation-docs}/[Micrometer Context Propagation library] can help propagate such values and better correlate the processing of the events.
The application can configure the chosen `TaskExecutor` to use a `ContextPropagatingTaskDecorator` that decorates tasks and propagates context.
For this to work, the `io.micrometer:context-propagation` library must be present on the classpath:
diff --git a/framework-docs/modules/ROOT/pages/web/webmvc/mvc-ann-async.adoc b/framework-docs/modules/ROOT/pages/web/webmvc/mvc-ann-async.adoc
index cab7cdae7f2..3fde9a1f953 100644
--- a/framework-docs/modules/ROOT/pages/web/webmvc/mvc-ann-async.adoc
+++ b/framework-docs/modules/ROOT/pages/web/webmvc/mvc-ann-async.adoc
@@ -452,9 +452,8 @@ The following `ThreadLocalAccessor` implementations are provided out of the box:
The above are not registered automatically. You need to register them via `ContextRegistry.getInstance()` on startup.
-For more details, see the
-https://micrometer.io/docs/contextPropagation[documentation] of the Micrometer Context
-Propagation library.
+For more details, see the {micrometer-context-propagation-docs}/[documentation] of the
+Micrometer Context Propagation library.