Update `CassandraAutoConfiguration` so that properties in a
`spring.data.cassandra.config` file can override the default values
defined in `CassandraProperties`.
This commit changes two things:
1. Any primitive on `CassandraProperties` are replaced with object values.
This allows distinguishing between defaults values and no-values. Then
CassandraAutoConfiguration.mapConfig() can use whenNonNull() predicate
to ignore those.
2. `CassandraProperties` no longer populate default values on any
property. With that, the defaults can be applied on top of the file
spring.data.cassandra.config; i.e. the config file have higher
precedence than the defaults, but lower that any spring.data.cassandra.*
property.
See gh-31238
As seen in spring-projects/spring-graphql#375, Spring Boot should also
use "application/json" as the default MIME type but remain compatible
with "application/graphql+json" still if clients POST content with this
type or explicitly accept it.
Closes gh-30860
spring.security.saml2.relyingparty.registration.*.asserting-party.* is
now named spring.security.saml2.relyingparty.registration.*.assertingparty.*
Closes gh-30785
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
This commit contributes a `RSocketGraphQlClient.Builder` component to
the context, pre-configured with the `RSocketStrategies`, a customized
`RSocketConnector` and the expected data MIME type.
See gh-30453
This commit adds the ability to configure SSL in embedded web containers
using PEM-encoded certificate and private key files, as an alternative
to configuring SSL with Java KeyStore files.
Closes gh-29273
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
As a result of changes for
https://github.com/spring-projects/spring-graphql/issues/342,
GraphQlWebSocketHandler now exposes a method to create the
WebSocketHttpRequestHandler, pre-configured with a context propagating
HandshakeInterceptor. This commit updates the autoconfig to use it.
Closes gh-30641
All `FailureAnalyzer` implementations should use constructor
injection for `BeanFactory` and `Environment` instead of implementing
`BeanFactoryAware` or `EnvironmentAware` interfaces.
Fixes gh-30585
As seen in spring-projects/spring-graphql#108, the GraphQL HTTP spec now
requires the "application/graphql+json" media type and accepts
"application/json" for backwards compatibility.
This commit updates the `RouterFunction` definition for the GraphQL HTTP
endpoints so that both types are accepted.
Closes gh-30407
This commit adapts to the latest Spring GraphQL changes, renaming
`GraphQlService` to `ExecutionGraphQlService` as well as the
`WebInterceptor` contract to `WebGraphQlHandlerInterceptor`.
See spring-projects/spring-graphql#332
Ensure that the `spring.jmx.unique-names` property is applied to the
auto-configured `MBeanExporter` as well as the `ObjectNamingStrategy`.
Fixes gh-29968
As part of the upgrade, the property for configuring features has
been removed as support for feature-aware versions has been removed
from Embedded Mongo. For advanced configuration where features were
specified, users should provide a MongodConfig bean instead.
Closes gh-29985
Closes gh-30219
Prior to this commit, launching a GraphQL application without any schema
file or customizer bean would result in an exception caught by a
FailureAnalyzer telling the developer about configured locations.
Since then, a new client has been introduced in Spring GraphQL and the
mere presence of the GraphQL starter does not mean anymore that the
intent is to create a GraphQL API in the app: we could instead just
consume an existing, remote API.
This commit refines the GraphQL server auto-configuration so that it is
enabled only if:
* there is at least one schema file in the configured locations
* or a `GraphQlSourceCustomizer` bean has been defined in the app
These changes make the custom FailureAnalyzer useless and is also
removed as part of this commit.
Closes gh-30035
Prior to this commit, we would configure a default conversion service
for GraphQL annotated controllers, without registering any additional
formatters.
This commit aligns the GraphQL auto-configuration with MVC and WebFlux,
since we now use the `ApplicationConversionService` to register all
application formatters for the GraphQL infrastructure.
Closes gh-29638
After 0b449d89e1,
the ConversionService on AnnotatedControllerConfigurer is an internally
managed instance that is customized with FormatterRegistrar rather than
set.
Closes gh-29636
This commit switches to 1.0.0-SNAPSHOT for Spring GraphQL, before its
upcoming 1.0.0-M6 version.
This commit adapts to the changes introduced in
spring-projects/spring-graphql#317 : now that `GraphQlClient` has been
introduced, `GraphQlTester` has been aligned with the new
infrastructure. The `@GraphQlTest` and `@SpringBootTest` testing support
is now using different variants for each.
All samples have been updated to use the proper GraphQL terminology, see
and spring-projects/spring-graphql#310 .
See gh-29637
- Adds a new @DisableOnOs annotation, which is inspired from JUnit5s
@DisableOnOs annotation. This new annotation supports the architecture
and is repeatable
Closes gh-30082
As @AutoConfiguration is now meta-annotated with @AutoConfigureAfter
and @AutoConfigureBefore, the generated property files have a lot of
superfluous lines in the format <class>.AutoConfigureAfter= and
<class>.AutoConfigureBefore=.
One can now configure in the annotation processor for each property key
if empty values should be omitted. This is currently only activated for
AutoConfigureAfter and AutoConfigureBefore
See gh-29907
The relative ordering is implemented with @AliasFor annotations on the
@AutoConfiguration annotation. The production code already works without
changes, only the test code had to be modified. It now uses
AnnotationMetadata which already knows how to deal with @AliasFor
instead of using the reflection API directly.
See gh-29907
This commit adds support for instantiating FailureAnalyzer
implementations with BeanFactory and/or an Environment constructor
arguments and deprecates support for setter injection of these values
using BeanFactoryAware and EnvironmentAware.
Closes gh-29811
The import selector will now, in addition to spring.factories, look for
ManagementContextConfiguration classes in a file called
META-INF/spring/org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration.imports
The existing ManagementContextConfigurations have been moved from
spring.factories to the new file.
Closes gh-29730
Implements a new AutoConfigurationLoader, which loads
auto-configurations from a file in META-INF/spring-boot.
Adapts the AutoConfigurationImportSelector to use the new loader.
Adapts the ImportAutoConfigurationImportSelector to use the new loader.
Adapts the metadata plugin in the build to additionally load the
auto-configurations from the new file.
Updates the documentation for auto-configurations and test slices.
Closes gh-29872