Releases: spring-projects/spring-framework
Releases Β· spring-projects/spring-framework
v6.0.0-RC1
β 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
v6.0.0-M6
β 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 [#28...
v5.3.23
β 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
β 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...
v5.3.22
β 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 honorProtocolResolver
when a resource loader is set viasetResourceLoader()
#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
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v5.3.21
β 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
β 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
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v5.3.20
β 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
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.22.RELEASE
v5.3.19
β 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!