Add an `DispatcherServletPath` interface which provides a much more
consistent way to discover the path of the main dispatcher servet.
Prior to this commit, auto-configurations would often make use of the
`ServerProperties` class to discover the dispatcher servlet path. This
mechanism isn't very explicit and also makes it hard for us to relocate
that property in Spring Boot 2.1.
This commit also reverts most of fddc9e9c7e since it is now clear that
the supporting multiple dispatcher servlet paths will be much more
involved that we originally anticipated.
Closes gh-13834
This commit adapts to a Spring Framework change based on SPR-11419 and
SPR-15338. Rather than throwing an exception when injecting a List or
Map of a candidate bean that is not present, an empty collection/map is
injected.
Previously, exclude of an import selector was applied only locally. In
other words, if one import selector imports `AcmeAutoConfiguration` and
another one exclude it, it would still be imported because exclude were
applied separately
This commit collects the outcome of all auto-configuration import
selectors and then apply exclusions in a single pass.
Closes gh-12586
Previously, if a user defines a `@Bean` with a method that returns
`null`, injection by type will ignore that definition but the report
doesn't mention that candidate.
This commit improves the failure analyzer to look for user-defined beans
as well, detecting beans that are `null` matching the requested type
and including them in the report.
Closes gh-13531
This commit adds the ability to customize the RetryTemplate used in the
RabbitMQ infrastructure. The customizer is slightly unusual and offer
a `Target` enum that define the component that will use the retry
template: `SENDER` for the auto-configured `RabbitTemplate` and
`LISTENER` for a listener container created by a
`RabbitListenerContainerFactoryConfigurer`.
Closes gh-13793
This commit turns a lazy injection point for `HttpMessageConverters`
into an `ObjectProvider`-backed injection.
This allows to lazily rely on that bean without creating for it; in some
environments, such proxy creation can lead to issues like SPR-16990.
See gh-13785