v6.0.0-RC1
Pre-release
Pre-release
spring-builds
released this
12 Oct 10:09
·
6366 commits
to main
since this release
⭐ New Features
- Add native support for ExceptionHandler and ProblemDetail #29297
- Refine SQLErrorCodesFactory reachability on native images #29294
- Refine
BindingReflectionHintsRegistrar
infrastructure #29279 - Normalize URIs returned from FileSystemResource.getURI() #29275
- Redesign AOT Processors #29266
- Simplify TestRuntimeHintsRegistrar API #29264
- UrlResource#getFilename() should return unencoded file name #29261
- Add reflection hints for EmbeddedDatabaseFactory$EmbeddedDataSourceProxy#shutdown #29259
- Change keyvalue name to http.url in server observations #29254
- Code generator should not use reflection for protected artifacts #29253
- Use MethodArgumentNotValidException for model attribute arguments #29251
- Allow TestCompiler SourceFile to work with records #29236
- Generate matching inner class for inner class configuration #29213
- Kotlin functional config DSL should prevent beans to be registered twice in AOT-optimized contexts #29211
- Allow BeanRegistration target to be any arbitrary class name #29207
- Add support for
Charset
to value code generator #29186 - Enable HTTP and HTTPS on native in spring-web module #29185
- Optimize native footprint by avoiding using
ModuleFinder.ofSystem()
at runtime #29183 - Introduce AotProcessor to invoke the AOT engine on an application #29181
- Move TestCompiler to dedicated package #29175
- Use java.nio and FileSystems to resolve files in PathMatchingResourcePatternResolver #29163
- Replace ApplicationContextAotInitializer with an AotApplicationContextInitializer interface #29157
- Enable default TestExecutionListeners in JUnit 4 and TestNG base test classes #29149
- Support cglib generated classes with TestCompiler #29141
- Infer AOT proxies created by ProxyFactoryBean #29097
- HTTP interface client ignores
@DateTimeFormat
on path variable #29095 - Integrate the Micrometer Context Propagation library #29056
- Upgrade RestTemplate to HttpClient 5 #28925
- Improve resource handling for empty files contained in jars #28850
- Allow for external customization and i8n of the "detail" of an RFC 7807 response #28814
- Revise
CookieLocaleResolver
to useResponseCookie
#28779 - Optimize SpEL and property placeholder support for
@Async
qualifiers #28549 - Customization for ObjectReader and ObjectWriter #28401
- Improve exception message if MultipartParser can not find end of body #28067
- Revisit AOT constructor and factory method resolution #27920
- Support CBOR and Protobuf with Kotlin Serialization #27628
- CGLIB does not allow packages to start with "java" #27622
- Support comma-delimited list of origin patterns in
@CrossOrigin
#27606 - Improve the fluency of the ResponseCreator API #27280
- Support for problem details based on RFC 7807 #27052
- Add fast-path for no-args constructor in BeanUtils.instantiateClass #24104
- Resolve generic type in more complex scenarios #23418
🐞 Bug Fixes
- Hints for CGLIB proxies are not consistently registered #29295
- Ensure context caching works properly during AOT runtime in the TestContext framework #29289
AbstractJackson2Encoder
encodes empty Flux to invalid JSON #29274- RuntimeHints accessors have inconsistent naming #29269
- ClassPathResources with same absolute path and same ClassLoader should be equal #29263
- HTTP URL KeyValue should provide entire request URL as a value #29257
- Hints for cglib configuration classes are not registered with a valid name #29252
- Add
ConstantReadableJavaField
caching inConstantFieldSubstitutionProcessor
#29250 - StringUtils should parse locale strings without country but with variant #29248
- Generated code does not take visibility of method if it is defined in a parent class #29245
- RestTemplate Observation is started without a complete tracing context #29234
- Fix Outcome KeyValues in HTTP observations #29232
- HTTP ObservationConvention implementations miss contextualName #29231
- Refine
ConstantFieldSubstitutionProcessor
error handling #29219 - Align RuntimeHintsAgent behavior with GraalVM reflection changes #29205
- Class meta-annotated with
@Reflective
and annotated with@RegisterReflectionForBinding
is only processed by SimpleReflectiveProcessor #29193 - Spring Web 6.0.0-M6 breaks Kotlin support for (De-)Serialization in some edge-cases #29192
- BeanDefinitionMethodGenerator should not generate code in the javax package name #29123
- CGLIB proxies are not used at runtime on
@Configuration
classes in AOT mode #29107 - Remove call to requestCompleted in RequestMappingHandlerAdapter #29002
📔 Documentation
- Document
PartEvent
API #29170 - Switch to spring-asciidoctor-backends #29162
- Improve Javadoc of BeanRegistrationAotProcessor to describe the "runtime replacement use case" #29126
- Improve Javadoc of GeneratedMethods#add to describe naming conventions #28997
🔨 Dependency Upgrades
- Update Reactor Netty 2.0 version to 2.0.0-SNAPSHOT #29247
- Upgrade to ASM 9.4 #29305
- Upgrade to Context Propagation 1.0.0-RC1 #29273
- Upgrade to JUnit 5.9.1 #29179
- Upgrade to Kotlin 1.7.20 #29225
- Upgrade to Micrometer 1.10.0-RC1 #29241
- Upgrade to Reactor 2022.0.0-RC1 #29268
❤️ Contributors
We'd like to thank all the contributors who worked on this release!