⭐ New Features
- Add HandshakeWebSocketService runtime hints #29146
- Add className variants in ReflectionHintsPredicates for checking fields and methods #29143
- Set
hibernate.bytecode.provider
tonone
on native image #29140 - Add proxy hints for org.hibernate.SessionFactory & org.hibernate.Session #29138
- DefaultPersistenceUnitManager.determineDefaultPersistenceUnitRootUrl is unable to resolve root url in native image #29137
- Adapt FieldHint to recent GraalVM versions #29130
- Deprecate StreamUtils.emptyInput() #29125
- Improve exception message when the code for a value could not be generated #29118
- Deprecate support for theme #29114
- Add resource hints for
HtmlCharacterEntityReferences.properties
#29112 - Introduce AotTestAttributes mechanism in the TestContext framework #29100
- Return absolute path without leading slash from ClassPathResource#getPath #29099
- Register runtime hints for types exposed via PersistenceManagedTypes #29096
- Remove deprecated SynthesizedAnnotation interface #29092
- Add support for providing JNI runtime hints #29085
- Introduce registerResource(Resource) in ResourceHints #29083
- Introduce AotTestExecutionListener API in the TestContext framework #29070
- Introduce TestRuntimeHintsRegistrar in the TestContext framework #29069
- Use
serializerOrNull
in Kotlin Serialization support #29068 - Align RuntimeHintsPredicates with new FieldMode #29063
- Remove support for setting default CacheAwareContextLoaderDelegate via system property #29061
- Avoid shipping AWT classes in native images #29060
- Stop using RuntimeHintsUtils to register SynthesizedAnnotation proxies #29059
- Remove obsolete RuntimeHintsUtils #29058
- Deprecate SynthesizedAnnotation and related methods #29053
- Stop implementing SynthesizedAnnotation in annotation proxies #29041
- Introduce logging for ContextCustomizer[Factory] to improve diagnostics #29036
- Avoid reflection for instantiating MockServerContainerContextCustomizer #29035
- Skip ContextCustomizerFactory that cannot be loaded #29034
- Register runtime hints for TestContext framework classes #29028
- Register runtime hints for
@Sql
scripts #29027 - Register runtime hints for
@WebAppConfiguration
attributes #29026 - Register runtime hints for
@TestPropertySource
attributes #29025 - Register runtime hints for
@TestExecutionListeners
attributes #29024 - Register runtime hints for
@BootstrapWith
attributes #29023 - Register runtime hints for ActiveProfilesResolver #29022
- Register runtime hints for
@ContextConfiguration
attributes #29021 - Remove remaining native build-time class initializations #29018
- Introduce TypeHint.Builder#onReachableType(Class<?>) #29017
- Harmonize registration of reflection hints #29011
- Revisit resource cleanup in RestTemplate and ClientHttpRequestFactory #29010
- Allow MethodReference to support a more flexible signature #29005
- Refine
JacksonModulesRuntimeHints
#29001 - Add hint for use of
@Qualifier
as a meta-annotation #29000 - Lazy Validator resolution in MethodValidationPostProcessor #28990
- Infer JDK dynamic proxies for Spring beans #28980
- Contribute
@PropertySource
declarations in AOT optimized contexts #28976 - Expose registrar for
@Reflective
#28975 - Revisit our annotation support now that annotations are available in a native image without a dedicated hint #28967
- Increase StreamUtils.BUFFER_SIZE to 8192 #28965
- Update StreamUtils drain and emptyInput to use JDK builtins #28961
- Integrate class proxy generation in AOT processing #28954
- RuntimeHintsUtils.registerAnnotation should not register SynthesizedAnnotation proxy for
@AliasFor
#28953 - Allow null argument for
ResponseEntity.DefaultBuilder.eTag(String etag)
#28947 - Remove the need for reflection for OptionalValidatorFactoryBean #28939
- Rename generateApplicationContext() in ApplicationContextAotGenerator #28927
- Remove deprecated GenericPropertiesContextLoader from the TestContext framework #28911
- Introduce AotContextLoader SPI in the TestContext framework #28906
- Deprecate methods in ContextLoader API in the TestContext framework #28905
- Make BootstrapUtils.resolveTestContextBootstrapper() public #28891
- Introduce RuntimeHintsUtils#registerComposableAnnotation #28887
- Instrument MVC and WebFlux for Observability #28880
- Introduce TestGenerationContext #28877
- Support Netty 5's Buffer API #28874
- Support for Netty 5 #28847
- Harmonize visibility of RuntimeHints builders #28835
- Introduce command-line application for triggering AOT test context processing #28825
- Introduce TestClassScanner to locate Spring test classes for AOT processing #28824
- Allow empty path in MockMvc #28823
- AOT-generated code for a FactoryBean should have a better location #28812
- Add support for SchedulerFactoryBean in native-image #28725
- EnableAsync doesn't work in native-image #28710
- Improve test coverage of RdbmsOperation #28472
- Treat MariaDB as an independent database type #28355
- Instrument HTTP clients for Observability #28341
- Deprecate ignoreDefaultModelOnRedirect property and set to true by default #28324
- Allow to provide a pre-computed scan PersistenceUnitManager #28287
- Make use of new HtmlUnit API for access request parameters #28240
- Add support in the TCF to use pre-processed AOT contexts #28205
- Add support for processing test contexts ahead-of-time #28204
- Introduce AOT generated class proxies #28115
- Deprecate SpringFactoriesLoader#loadFactoryNames #27954
- Deprecate ListenableFuture in favor of CompletableFuture #27780
- Revisit ConcurrentLruCache implementation #26320
- Support to Create Proxy for RSocket Client From Annotated Interface #24456
🐞 Bug Fixes
- BufferClosedException when decoding to Flux in StringDecoder #29119
- RuntimeHintsAgent should not require full reflection on types #29091
- Hint for resource pattern with leading slash is not applied in native image #29088
- ResourceHintsPredicates.forResource(TypeReference,String) doesn't support default package #29086
- Reflection field hints can downgrade allowWrite #29055
- Misleading error message when no constructor or factory method can be found #29052
- IllegalAccessException while instrumenting invocation of non-public method with RuntimeHintsAgent #29046
- Error handling no longer works for JSON controller method returning Flux under 6.0.0-M5 #29038
@Order
is not available in native image #28988- AbstractTestContextBootstrapper should not log stack trace when skipping a TestExecutionListener #28962
- MergedBeanDefinitions change can be lost if bean is instantiated #28948
- refreshForAotProcessing should freeze the configuration before invoking MBDPP #28941
- Different order of invocations for ImportAware and EmbeddedValueResolverAware with AOT-optimized contexts #28915
- Native reflection configuration should consider
beanClass
attribute of bean definitions #28913 - RecordedInvocation instance resolution is inconsistent #28907
- CompileWithTargetClassAccessExtension fails to select overloaded test methods #28901
- Ensure CompileWithTargetClassAccessExtension only uses the Jupiter TestEngine #28900
- JPA exception mapping fails with Hibernate 6.1.1 in spring 6.0.0-M5 #28855
- Fix inferred methods code generation #28843
- AOT-generated code does not consider by-type
RuntimeBeanReference
s #28841 - ContentDisposition does not handle quoted pairs when parsing #28837
- Absence of dependencies for optional TestExecutionListener breaks integration tests #28828
- AOT generated code should consider visibility of FactoryBean target type #28809
- InstantiationAwareBeanPostProcessor implementations are not invoked with an AOT-processed context #28777
- RuntimeHintsUtils#registerAnnotation fails to register SynthesizedAnnotation proxy #28767
- Factory method is lost for AOT-processed beans that do not require autowiring #28748
- Bean definition contribution includes attributes that are not used at runtime #28516
- Code generation should not contribute (inferred) destroy method name #28215
📔 Documentation
- Add examples to Javadoc for Throwing*.of factory methods #28969
- Fix typo in BasicJsonWriter.java #28890
🔨 Dependency Upgrades
- Upgrade to JUnit 5.9.0 #28752
- Upgrade to Micrometer 1.10.0-M6 #29151
- Upgrade to Reactor 2022.0.0-M6 #29128
❤️ Contributors
We'd like to thank all the contributors who worked on this release!