Previously, RestTemplateBuilder and WebClient.Builder beans were used
to create the HTTP client for sending out spans. Those same beans are
also instrumented for observability which results in a cycle.
This commit breaks the cycle by not using the application-web
builders to create the RestTemplate and WebClient's used by the Zipkin
senders. Instead, builders are created inline, with new callbacks
being introduced to allow the user to customize these Zipkin-specific
builders.
See gh-32528
Previously, a Webclient-based sender was only for reactive web
applications, falling back to a RestTemplate-based sender in all
other cases.
With this commit we now prefer to use WebClient if it is available,
irrespective of the web application type. The assumption is that
if the user has WebClient on the classpath, it's either a reactive
web application, or it's a servlet web application or non-web
application but WebClient is preferred.
See gh-32529
Prior to this commit, Spring Boot would auto-configure a customizer that
instruments `RestTemplate` through a `RestTemplateBuilder`. This would
install a request interceptor that instrumented client exchanges for
producing metrics.
As of spring-projects/spring-framework#28341, the instrumentation is
done at the `RestTemplate` level directly using the `Observation` API.
The `Tag` (now `KeyValue`) extraction, observation name and
instrumentation behavior now lives in the Spring Framework project.
This commit updates the auto-configuration to switch from Boot-specific
Metrics instrumentation to a generic Observation instrumentation.
As a migration path, some configuration properties are deprecated in
favor of the new `management.observations.*` namespace.
Closes gh-32484
This commit updates Servlet based Spring Security auto-configuration
to use AuthorizationFilter, which is intended to supersede
FilterSecurityInterceptor.
See gh-31255
With this commit, loading `@AutoConfiguration`,
`@ImportAutoConfiguration`, and `@ManagementContextConfiguration`
classes is supported with `.imports` files only. Support for loading
these classes with `spring.factories` is removed.
Closes gh-29699
This commit adds the
`ManagementContextConfigurationImportsAnnotationProcessor` to
the `spring-boot-autoconfigure-processor` annotation processor
module.
Closes gh-32222
This commit adds the `AutoConfigurationImportsAnnotationProcessor` to
the `spring-boot-autoconfigure-processor` annotation processor
module. When added to a project build, the annotation processor will
generate the
`org.springframework.boot.autoconfigure.AutoConfiguration.imports`
file automatically from `@AutoConfiguration`-annotated classes. It
also applies the annotation processor to the Spring Boot build.
Closes gh-31228
Any classes that rely on Spring Data being on the classpath
have been moved under a data package.
Certain configuration properties have also been updated to
accurately reflect whether Spring Data is required for the
auto-configuration to work.
Closes gh-11574
This commit adds the Spring for GraphQL auto-configuration back
into Spring Boot 3.0, now that a 1.1.0 release is scheduled with the
required baseline. This release also needs GraphQL Java 19.0 as a
baseline.
Closes gh-31809
Previously, health contributors in a non-reative app were found by
retrieving them from the application context rather than via
dependency injection. This results in only contributors from the
current context being found, with contributors in ancestor contexts
ignored.
This commit moves to injection of the contributors, aligning the
behaviour with that of a reactive application.
Closes gh-27308
This commit introduces auto-configuration for the new Elasticsearch
clients that are based upon their new Java client. The new Java
client builds on top of their existing low-level REST client,
replacing the high-level REST client which has been deprecated.
As part of introducing support for the new Elasticsearch client,
the auto-configuration for the templates (both imperative and
reactive) provided by Spring Data has also been updated to use the
new templates that build upon the new Java client.
As part of these changes, support for the high-level REST client and
the old Spring Data Elasticsearch templates has been removed. One
significant change is that the new reactive template is no longer
based on WebClient. As a result, the WebClient-specific configuration
property has been removed.
Closes gh-30647
Closes gh-28597
Closes gh-31755
Mainly adds reflection hints for the actuator infrastructure.
Also adds the OperationReflectiveProcessor, which registers the
@ReadMethod, @DeleteMethod and @WriteMethod annotated methods for
reflection and adds reflection hints for method return types.
See gh-31671
The recent changes in Spring Data JPA [1] mean that we no longer need
a dependency on spring-aspects for Data JPA's hint registration to
succeed.
5821272112
This commit makes the following potentially breaking changes:
- Dependency management for modules that do not exist in Hibernate
6.1 has been removed.
- Hibernate's modules are now in the org.hibernate.orm group. Users
not using the starter or using modules that are not in the starter
will have to update their build configuration accordingly.
- spring.jpa.hibernate.use-new-id-generator-mappings has been removed
as Hibernate no longer supports switching back to the old ID
generator mappings.
Co-authored-by: Andy Wilkinson <wilkinsona@vmware.com>
Closes gh-31674
Update `CompositeHandlerExceptionResolver` to search for beans in
all contexts. Note that `BeanFactoryUtils.beansOfTypeIncludingAncestors`
cannot not be used since we need to pick up all beans, even if they
have the same name.
See gh-31495
Update `Log4J2LoggingSystemTests` to exclude Logback and include
'log4j-slf4j-impl'. The `ModifiedClassPathClassLoader` has also been
updated so that it no longer automatically excludes `log4j` artifacts,
instead we now use `@ClassPathExclusions` on the relevant tests.
Fixes gh-19365
Refactor child management configuration and add AOT generation support.
A new `ChildManagementContextInitializer` class now performs the child
context initialization and also handles AOT processing concerns.
Closes gh-31163
- Document that an application key must be set to publish metadata
for the exported metrics.
- Point out that using a non-US Datadog site (e.g., EU) requires
changing the `uri` property.
See gh-30879
In all likelihood there will not be a 2.9 release so this commit
updates the message for deprecations made in 2.7 to indicate that
removal will not occur until 3.0.
See gh-30903
spring.security.saml2.relyingparty.registration.*.asserting-party.* is
now named spring.security.saml2.relyingparty.registration.*.assertingparty.*
Closes gh-30785
- Auto-configures HttpServerTracingObservationHandler and
HttpClientTracingObservationHandler into Micrometer Tracing. Both
handlers are ordered before the DefaultTracingObservationHandler,
which is only used as a fallback.
- The HttpServerHandler and HttpClientHandler implementations are
auto-configured in the Brave and OpenTelemetry auto-configurations.
Closes gh-30784
Rename spring.security.saml2.relyingparty.registration.*.identity-provider.*
to spring.security.saml2.relyingparty.registration.*.asserting-party.*
The old property names are still supported, but will lead to a warning
in the logs.
Closes gh-30642
Since Micrometer version 1.9.0, the Dynatrace registry uses specialized
instruments by default, which ensures data is exported in an optimal
format. By using this new flag, users can switch back to the previous
behavior, which uses the original instruments from Micrometer.
See gh-30637
Prior to this commit, Spring Boot would only auto-configure the
`RestHighLevelClient` and `RestClientBuilder` if the
`RestHighLevelClient` was present. This was done in 1d73d4ed.
This commit brings back the exposing of the `RestClient` bean in when
exposing the `RestHighLevelClient` or when the `RestHighLevelClient`
is not present. It allows for using the auto-configuration and its
customizers of the `RestClientBuilder` in a similar way as it is done
for the `RestTemplateBuilder` and the `WebClient.Builder`.
The presence of the `elasticsearch-rest-high-level-client` module is
now optional. This opens the door for potentially adding support for
the new Elasticsearch Java Client[1] that is based on the same
`RestClient`.
The health contributor and its configuration has also been updated to
only depend on the low-level RestClient.
See gh-28496
[1] https://github.com/elastic/elasticsearch-java
- Adds a ObservationRegistry bean
- Add support for ObservationRegistryCustomizers
- Enables timer creation for observations if micrometer-core is on
the classpath
- Registers ObservationPredicate, GlobalTagsProvider and
ObservationHandler on the MeterRegistry
- Applies grouping to the ObservationHandlers: MeterObservationHandler
are added to a FirstMatchingCompositeObservationHandler
- If micrometer-tracing is on the classpath, the
TracingObservationHandler are added to a
FirstMatchingCompositeObservationHandler
Closes gh-29666
- Moved from 'management.metrics.export.<product>' to
'management.<product>.metrics.export'
- The default enabled property moved from 'management.metrics.export.defaults.enabled'
to 'management.defaults.metrics.export.enabled'
Closes gh-30381