This commit introduces a dedicated AotProcessors for immutable
configuration properties beans as their bean definition use an
instance supplier that needs special handling. If such a bean definition
is detected, dedicated code is generated that replicates the behavior
of the instance supplier.
Closes gh-31247
Prior to this commit, the `@ConfigurationProperties` annotation would
not be registered for reflection hints: this means it could be missing
at runtime in a native image and would not be registered for JDK
proxying - this can fail the synthesized annotation resolution.
This commit ensures that hints are registered for this annotation if
configuration properties are declared in the bean factory.
Fixes gh-31227
The spring-ldap-ldif-batch module was removed in Spring LDAP 2.4.0 in
favor of the equivalent code that already exists in Spring Batch.
This commit aligns Boot's dependency management with this removal.
Closes gh-31254
This commit updates the codebase so that AOT-generated code can run on
the JVM in an opt-in fashion alongside the existing support of native
images.
When optimizations have been generated, setting the "spring.aot.enabled"
spring property (JVM or spring.properties) allows to opt-in for that
behavior on the JVM.
Closes gh-31244
This commit adapts how the BasePackages bean is registered so that
AOT processing works with it out-of-the-box. Previously we were using
an instance supplier with the accumulated base packages. This commit
changes that to set a constructor argument values.
Closes gh-31223
This commit makes sure that processing of the main method upon
completion of SpringApplication#run. Previously, any instructions in
the user's main method were invoked, which is not suitable to build-time
processing.
Closes gh-31219
Previously, ResolvedDependencies used hasError on
ResolvedConfiguration to check that it was safe to work with all
of the resolved configuration's artifacts and their files. This
check is not sufficient as errors can still occur later on.
This commit updates ResolvedDependencies to use a lenient
configuration, thereby avoiding any problems that may be caused by
errors that occur after the hasError check.
Closes gh-30586
Mimepull dependency was introduced in 1c18fd8 for gh-14924 to force the
version as the one coming from saaj-impl was not on Maven Central.
This is no longer the case.
Version 1.10.0 of Mimepull has been built with Java 11, breaking
compatibility with Java 8 for Spring Boot.
See gh-31145