Skip to content

Releases: spring-projects/spring-framework

v6.0.0-RC1

12 Oct 10:09
Compare
Choose a tag to compare
v6.0.0-RC1 Pre-release
Pre-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 use ResponseCookie #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 in ConstantFieldSubstitutionProcessor #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

Read more

v6.0.0-M6

15 Sep 07:44
Compare
Choose a tag to compare
v6.0.0-M6 Pre-release
Pre-release

⭐ New Features

  • Add HandshakeWebSocketService runtime hints #29146
  • Add className variants in ReflectionHintsPredicates for checking fields and methods #29143
  • Set hibernate.bytecode.provider to none 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 [#28...
Read more

v5.3.23

15 Sep 08:41
Compare
Choose a tag to compare

⭐ New Features

  • Introduce AnnotationUtils.isSynthesizedAnnotation(Annotation) #29054
  • Introduce createContext() factory method in AbstractGenericWebContextLoader #28983
  • Support TreeSet collection type in CollectionFactory.createCollection() without using reflection #28949
  • Document when RequestEntity.getUrl() throws an UnsupportedOperationException #28930
  • Deprecate NestedIOException #28929
  • Make isConnected() in WebSocketConnectionManager public #28785
  • Expose headers from STOMP RECEIPT frame to registered callbacks #28715
  • Make WebClientException serializable #28321

🐞 Bug Fixes

  • Ordering inconsistency with beans defined in parent context #29105
  • RelativeRedirectResponseWrapper does not commit response in sendRedirect #29050
  • MockServerContainerContextCustomizerFactory does not support @Nested tests #29037
  • Request to improve KotlinSerializationJsonHttpMessageConverter logic in RestTemplate #29008
  • WebFlux: multipart requests hang sometimes #28963
  • DataBufferUtils.write(Publisher, Path) loses context #28933
  • connectionTimeOut and readTimeout not working on UrlResource #28909
  • SockJsServiceRegistration#setSupressCors has a typo and should be deprecated #28853
  • RenderingResponse does not set status code on redirect views #28839
  • Avoid IllegalArgumentException when setting WebSocket error status #28836
  • Loss of context path after using ServerRequest.from #28820
  • ResponseCookie does not declare nullability annotations consistently for domain and path #28780

πŸ“” Documentation

  • Fix typo in data-access section #29048
  • Correct description of @RequestParam with WebFlux #28944
  • Fix broken kdoc-api links in kotlin.adoc #28908
  • Fix typos in Javadoc of class AbstractEncoder #28885
  • Fix links in Javadoc and reference docs #28876
  • Add missing closing parenthesis in reference doc #28867
  • Fix typos in Javadoc, reference docs, and code #28822
  • Replace use of the <tt> HTML tag in Javadoc #28819
  • Fix broken link in rsocket documentation #28817
  • Clarify docs on JNDI properties in Servlet environment #28488
  • Improve documentation of Caching annotations #28183

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.23 #29129

❀️ Contributors

We'd like to thank all the contributors who worked on this release!

v6.0.0-M5

14 Jul 08:30
Compare
Choose a tag to compare
v6.0.0-M5 Pre-release
Pre-release

⭐ New Features

  • HibernateTransactionManager compatibility with Hibernate 6.0/6.1 #28813
  • Reject JDK proxy hint registration for sealed interfaces #28786
  • Provide SerializationHintsPredicates in RuntimeHintsPredicates #28772
  • Deprecate convention-based annotation attribute overrides in favor of @AliasFor #28760
  • Add native image support for WebSocket STOMP messaging #28754
  • Simplify hint registration for Spring AOP proxies #28745
  • Only use JPMS exports as we don't need reflection access #28733
  • Open GraalVM internals to the ConstantFieldFeature #28732
  • Add support for records in BindingReflectionHintsRegistrar #28721
  • Replace java.util.Date and TimeUnit usage in scheduling with appropiate java.time classes #28714
  • Jackson well-known module support in native image #28709
  • RuntimeHints missing for WebFlux #28701
  • Add runtime hints for AbstractHandshakeHandler #28697
  • native-image: Problem with Scheduled annotation #28696
  • native-image: Support for MethodValidationPostProcessor #28689
  • native-image: Field 'PROPAGATION_REQUIRED' not found in class TransactionDefinition #28688
  • Allow dynamic properties in ProblemDetail #28665
  • Add Kotlinx Serialization support to BindingReflectionHintsRegistrar #28635
  • Add ResourceHints registrar for classpath patterns #28626
  • Replace build-time initialization by constant field evaluation at build-time #28624
  • Add reflection hints for data binding in Web controllers #28623
  • Add reflection hints for HttpEntity used in Web controllers #28622
  • Introduce ResourcePatternHint#toRegex #28620
  • Add ifPresent utility methods on RuntimeHints #28617
  • Register native hints for jakarta.inject annotations #28614
  • Use PathPatternParser by default in Spring MVC #28607
  • Support that the same RuntimeHintsRegistrar can be specified multiple times and invoked only once #28594
  • Rationalize naming strategy in ApplicationContextAotGenerator #28585
  • Add minimal Kotlin DSL RouterFunction attributes support #28569
  • Introduce attribute support in Kotlin RouterFunction DSL #28567
  • Allow ApplicationContextAotGenerator to generated better class names #28565
  • Allow BeanRegistrationAotContributions to provide BeanRegistrationCodeFragments customization #28557
  • Introduce RuntimeHints predicates utilities #28555
  • Deprecate trailing slash match and change default value from true to false #28552
  • Improve options for exception handling in HTTP interface client #28533
  • Add reflection hints for Web controllers #28518
  • Ambiguous behavior for ClassNameGenerator::generateClassName #28517
  • Support module path scanning for "classpath*:" resource prefix #28506
  • Refactor HttpServiceProxyFactory to be suitable as an infrastructure bean #28505
  • Allow custom HTTP method with @HttpExchange methods #28504
  • Create UrlResource factory methods that throw unchecked exceptions #28501
  • Introduce utility to register hints for an annotation that uses AliasFor #28497
  • Support property placeholders in url attribute of @HttpExchange #28492
  • Support default methods in @HttpExchange interface #28491
  • Introduce AotDetector mode #28474
  • Introduce a meta-annotation that indicates the annotated element requires reflection hints #28469
  • Add level guards for trace logging in SpringFactoriesLoaderRuntimeHintsRegistrar #28465
  • Add resolver for request attributes for @HttpExchange methods #28458
  • Add WebFlux equivalent of ResponseEntityExceptionHandler #28439
  • Avoid collectList when sending a Flux of objects as JSON using WebClient #28398
  • Avoid loading XML files for default SQL exception translation #28216
  • Refine runtime hint conditions #28126
  • Provide testing infrastructure for RuntimeHints #27981
  • Simplify default locale/timezone resolution in cookie/session locale resolvers #27609
  • Nested Exception's message should not include the messages from causal chain #25162
  • Add If-Match support and improve If-None-Match wildcard support #24881

🐞 Bug Fixes

  • Guard against NPE in PathMatchConfigurer #28816
  • AnnotationTypeMapping tracks @AliasFor mappings as convention-based #28773
  • Support by-type constructor references in ConstructorOrFactoryMethodResolver #28728
  • AOT generated code leads to exception on startup: Object of class [java.lang.Boolean] must be an instance of boolean #28727
  • HtmlUnit / MockMvc integration handles forwarded URLs partially #28722
  • StackOverflowError when using BindingReflectionHintsRegistrar #28683
  • Wrong reflection hints for arrays of inner types #28664
  • Add automatic hint for autowired field support #28655
  • Reflection configuration for parameter types with an inner class have wrong name #28606
  • Fix ResourceHintsWriter for leading/trailing wildcards #28597
  • JdkHttpClientResourceFactory has dependency on org.eclipse.jetty #28588
  • CompileWithTargetClassAccessClassLoader does not implement findResource #28574
  • ScopedProxyBeanRegistrationAotProcessor is never called #28561
  • Proxy hint missing when AliasFor is used on the annotation itself #28528
  • Fix attribute return types in @DeleteExchange, @PatchExchange, and @PutExchange #28498
  • Correctly detect Optional return type for `@HttpExc...
Read more

v5.3.22

14 Jul 09:26
Compare
Choose a tag to compare

⭐ New Features

  • Improve regex "." matching for URL paths #28815
  • Spring JDBC does not recognize LocalDate and LocalDateTime in javaType to sqlType Mapping #28778
  • ResolvableType.forInstance should return NONE for null instance #28776
  • Correctly identify MaxUploadSizeExceededException through keywords in message from Jetty 9.4.x #28759
  • Introduce StringUtils.trimAllWhitespace(CharSequence) #28757
  • Trim string input in Converters where whitespace is irrelevant #28756
  • Trim string input in PropertyEditors where whitespace is irrelevant #28755
  • Improve diagnostics for CGLIB ClassLoader issues on Java 9+ #28747
  • Create well-known non-interface types in CollectionFactory without using reflection #28718
  • Revise internals of LoggingCacheErrorHandler #28672
  • Simplify creation of LoggingCacheErrorHandler with logged stacktrace #28670
  • Fix DataSourceUtils inconsistent exception handling #28669
  • Introduce lenient parsing in DataSize regarding whitespace #28643
  • Support adding rather than replacing modules in Jackson2ObjectMapperBuilder #28633
  • Add MockMvcRequestBuilders.multipart(HttpMethod, String, Object...) #28631
  • Avoid parsing request body in DispatcherServlet for "parameters={masked}" log message #28587
  • Avoid synchronization in AbstractAspectJAdvice#calculateArgumentBindings #26377

🐞 Bug Fixes

  • WebFlux multipart temporary file not deleted when the client disconnects early #28740
  • Ensure channelExecutors and taskScheduler in STOMP WebSocket config are qualified #28736
  • MockHttpServletResponse addHeader does not allow Comment part with Set-Cookie header #28730
  • Meta-annotations are unnecessarily synthesized in MergedAnotations #28704
  • GenericApplicationContext does not honor ProtocolResolver when a resource loader is set via setResourceLoader() #28703
  • R2DBC: @Transactional(readOnly) is applied to the connection before the transaction has begun #28610

πŸ“” Documentation

  • Fix Kotlin code snippets language #28810
  • Fix typos in reference docs and project documentation #28805
  • Fix and improve Javadoc in spring-beans and spring-aop #28803
  • Fix and improve Javadoc in spring-core and spring-context #28802
  • Fix and improve Javadoc in spring-messaging, spring-jms and spring-expression #28800
  • Fix and improve Javadoc in spring-r2dbc, spring-oxm, spring-orm and spring-jdbc #28796
  • Fix and improve Javadoc in spring-test #28795
  • Fix and improve Javadoc in spring-tx #28794
  • Fix and improve Javadoc in spring-web #28791
  • Fix and improve Javadoc in spring-webflux #28790
  • Fix and improve Javadoc in spring-webmvc #28789
  • Fix and improve Javadoc in spring-websocket #28788
  • Fix Kotlin example for defines a custom @Production #28680
  • Fix a typo in ResponseEntity documentation #28647
  • Document that Kotlin inline classes are not supported yet #28642
  • Refine @Required Kotlin documentation to use annotation use site targets #28630
  • Fix Kotlin example for @ComponentScan basePackages attribute #28628
  • Kotlin examples for setter injection incorrectly use field injection #28596
  • Fix expectations in MockMvc Kotlin documentation #28301

πŸ”¨ Dependency Upgrades

  • Update to Bouncycastle 1.71 #28636
  • Upgrade to Reactor 2020.0.21 #28765

❀️ Contributors

We'd like to thank all the contributors who worked on this release!

v5.3.21

15 Jun 08:54
Compare
Choose a tag to compare

⭐ New Features

  • Expose ThreadPoolTaskExecutor queue size and capacity for metrics #28583
  • Lazily initialize DataSize.PATTERN #28560
  • MockMvcWebTestClient forces HTTP POST for multipart requests #28545
  • Support for CGLIB BeanCopier utility on JDK 17 #28530
  • Allow changes to org.springframework.web log category at runtime #28477

🐞 Bug Fixes

  • Avoid eager instantiation of non-singleton FactoryBean in getBeanNamesForType #28616
  • ObjectToObjectConverter doesn't consider return type of static methods #28609
  • Charset for input stream ignored in Jaxb2XmlDecoder #28599
  • Support RouterFunction ordering in Spring MVC #28595
  • Always construct new exception on error in DefaultWebClient #28550
  • HierarchicalUriComponents::getPort() throws NumberFormatException with invalid port in URI #28521
  • Cannot serve static resources with spaces from "file:" location when using PathPattern and UrlPathHelper is set to not decode #27791

πŸ“” Documentation

  • Fix code sample for nested router functions #28603
  • Fix Kotlin example for @Required #28590
  • Fix Kotlin example for dependency injection with static factory method #28589
  • Update documentation regarding nested test class support #28579
  • Update reference docs to use PropertySourcesPlaceholderConfigurer #28572
  • Fix typo in webflux.adoc #28542
  • Fix Javadoc for DatabaseClient #28520
  • CachingConnectionFactory with WebLogic JMS not caching producers nor consumers #28500
  • Fix Kotlin example for static factory method #28399

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.20 #28612

❀️ Contributors

We'd like to thank all the contributors who worked on this release!

v6.0.0-M4

12 May 15:01
Compare
Choose a tag to compare
v6.0.0-M4 Pre-release
Pre-release

⭐ New Features

  • Add native hints for core annotations #28442
  • Add byte[] to supported types in SimpleJmsHeaderMapper #28421
  • Add RootBeanDefinition constructor that accepts a ResolvableType #28418
  • Add Throwable functional interfaces #28417
  • Support multiple SpringFactoriesLoader files #28416
  • Add position variant of ObjectUtils.addObjectToArray #28415
  • Support for Jakarta Concurrency 3.0 #28400
  • Add header resolver for HttpExchange method #28395
  • FormHttpMessageConverter should not have a dependency on the Jakarta Mail API #28392
  • Support to Create a Proxy From an Annotated HTTP Service Interface #28386
  • BeanRegistrationContributionProvider should have access to the bean factory #28384
  • Generate appropriate AOT bean registration for scoped proxies #28383
  • AOT contribution for @PersistenceContext and @PersistenceUnit #28364
  • Return UnmodifiableMap in MVC PathVariableMapMethodArgumentResolver #28352
  • Allow to register AotContributingBeanFactoryPostProcessor declaratively #28342
  • Allow to register reflection hints for multiple types at once #28339
  • Add support for HEAD methods in Spring's Resource handling #28291
  • Initialize NativeDetector at build time #28244
  • Support multiple segments in encoded Content-Disposition #28236
  • Introduce HttpStatusCode interface #28214
  • Introduce fluent API for search options in MergedAnnotations #28208
  • Introduce predicate for searching enclosing classes in MergedAnnotations #28207
  • Remove obsolete org.springframework.core.NestedIOException #28198
  • Enable access to an RFC 7807 ProblemDetail formatted error response from the client side #28190
  • Support "application/problem+json" as the response Content-Type #28189
  • Introduce RuntimeHintsRegistrar #28160
  • Ability to differentiate different causes for WebInputException #28142
  • Remove TYPE_HIERARCHY_AND_ENCLOSING_CLASSES search strategy for MergedAnnotations #28080
  • Deprecate SerializationUtils#deserialize #28075
  • MediaType parameters in the "consumes" condition of @RequestMapping are not considered for matching #28024
  • Introduce token-based consumption of multipart requests in WebFlux #28006
  • Automatically clean up multipart temp files #27633
  • Introduce removeApplicationListener in ConfigurableApplicationContext #14023

🐞 Bug Fixes

  • Use Arrays.toString for initMethodNames and destroyMethodNames arrays in AbstractBeanDefinition#toString #28427
  • Reflection configuration for primitives have wrong name #28347
  • GraalVM reflect config uses wrong format for inner classes #28312
  • Throw a meaningful exception if a TypeReference does not use a fully qualified name #28213
  • Fix queriedMethods handling in ReflectionHintsSerializer #28212
  • AntPathMatcher matches path with trailing slash differently if '**' is present in the pattern #27506

πŸ“” Documentation

  • Use "instanceof pattern matching" in sample in reference docs #28332
  • Add Javadoc since for BeanDefinitionValueResolver.resolveInnerBean() #28217

πŸ”¨ Dependency Upgrades

  • Upgrade to Kotlin 1.6.20 #28036
  • Upgrade to Reactor 2022.0.0-M2 #28365

❀️ Contributors

We'd like to thank all the contributors who worked on this release!

v5.3.20

11 May 07:32
Compare
Choose a tag to compare

⭐ New Features

  • Refine CachedIntrospectionResults property introspection #28445
  • Improve tests and Javadoc on binding to a property of type javax.servlet.Part #27830
  • WritableResource doesn't have parity with Resource in @Value etc. [SPR-10656] #15284

🐞 Bug Fixes

  • Ignore invalid STOMP frame #28443
  • @ModelAttribute name attribute is not supported in WebFlux #28423
  • Fix BindingResult error when ModelAttribute has custom name in WebFlux #28422
  • Request body deserialization failures are not captured by exception handlers in WebFlux #28155

πŸ“” Documentation

  • Remove Log4J initialization from package-info.java in spring-web #28420
  • Remove Log4J configurer from package-info.java in spring-core #28411
  • Fix github issue reference in RequestMappingHandlerMapping #28372
  • Add Javadoc since tags for GraphQL constants #28369
  • Fix method reference in Kotlin documentation #28340

πŸ”¨ Dependency Upgrades

  • Upgrade to ASM 9.3 #28390
  • Upgrade to Reactor 2020.0.19 #28437

❀️ Contributors

We'd like to thank all the contributors who worked on this release!

v5.2.22.RELEASE

11 May 07:55
Compare
Choose a tag to compare

⭐ New Features

  • Refine CachedIntrospectionResults property introspection #28446

🐞 Bug Fixes

  • Ignore invalid STOMP frame #28444

v5.3.19

13 Apr 10:10
Compare
Choose a tag to compare

⭐ New Features

  • Remove DNS lookups during websocket connection initiation #28280
  • Add application/graphql+json Media type and MIME type constants #28271
  • Fix debug log for no matching acceptableTypes #28116
  • Provide support for post-processing a LocalValidatorFactoryBean's validator Configuration without requiring sub-classing #27956

🐞 Bug Fixes

  • Improve documentation and matching algorithm in data binders #28333
  • NotWritablePropertyException when attempting to declaratively configure ClassLoader properties #28269
  • BeanPropertyRowMapper's support for direct column name matches is missing in DataClassRowMapper #28243
  • AbstractListenerReadPublisher does not call ServletOutputStream::isReady() when reading chunked data across network packets #28241
  • ResponseEntity objects are accumulated in ConcurrentReferenceHashMap #28232
  • Lambda proxy generation fix causes BeanNotOfRequiredTypeException #28209
  • CodeGenerationException thrown when using AnnotationMBeanExporter on JDK 17 #28138

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.18 #28329

❀️ Contributors

We'd like to thank all the contributors who worked on this release!