Update the `Binder` so that empty properties are treated as an indicator
that default value binding should be attempted. This update allow bound
objects to differentiate between a completely missing property vs one
that is present but doesn't have any values.
For example, given the following value object:
@ConfigurationProperties("my")
public record My(Name name, int age) {
public record Name(String first, String last) {
}
}
The following binding scenarios are supported:
1) Full binding
my.name.first=Spring
my.name.last=Boot
my.age=4
Binds to `new My(new Name("Spring", "Boot"), 4)`
(works the same as Spring Boot 4.0)
2) Missing Properties
my.age=4
Binds to `new My(null, 4)`
(works the same as Spring Boot 4.0)
3) Default Properties
my.name=
my.age=4
Binds to `new My(new Name(null, null), 4)`
(previously would throw a converter exception)
Closes gh-48920
This commit adds support for running Spring Batch jobs with a MongoDB
store. It aligns as much as possible to the JDBC counterpart, with
spring-boot-starter-batch-data-mongodb and spring-boot-starter-batch-data-mongodb-test.
As we do not have a way to initialize a MongoDB store at the moment,
this commit adds a conservative approach of executing commands defined
by the standard Spring Batch schema script.
Closes gh-43236
This uses no-op implementations for the SdkTracerProvider,
SdkLoggerProvider and SdkMeterProvider, but still configures the
propagators.
Additionally, it doesn't create the tracing and logging beans which
would be superfluous for a disabled SDK.
Closes gh-49564
Prior to this commit, `EndpointRequest` exposed factory methods for
creating security matchers in the context of Actuator endpoints. This is
using the popular pattern matching approach for security matchers.
Such matchers are not as focused as method-level security and will match
the endpoint path itself (`"actuator/endpoint"`) as well as everything
beneath it (`"actuator/endpoint/**"`).
This commit improves the Javadoc and reference documentation to make
this behavior more explicit.
Closes gh-49520
This commit highlights that while "forwarded headers" support is enabled
automatically for cloud platforms, we generally assume that apps are
behind trusted HTTP proxies.
If this is not the case, app developers should disable this feature if
they choose to expose the application to direct Internet traffic.
Closes gh-49507
In the brackets we can now specify the encoding of the file instead of
only the file extension:
spring.config.import=classpath:import.properties[encoding=utf-8]
The old format
spring.config.import=classpath:import[.properties]
is still supported and is a shorthand for:
spring.config.import=classpath:import[extension=.properties]
Attributes can be combined, too:
spring.config.import=classpath:import[extension=.properties][encoding=utf-8]
Closes gh-28663
This automatically registers KafkaListenerObservationConvention on the
container factory, and KafkaTemplateObservationConvention on the
Kafka template.
Closes gh-48914