Releases: spring-projects/spring-framework
Releases Β· spring-projects/spring-framework
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!
v5.2.21.RELEASE
β New Features
- Remove DNS lookups during websocket connection initiation #28281
π Bug Fixes
- Improve documentation and matching algorithm in data binders #28334
- CodeGenerationException thrown when using AnnotationMBeanExporter on JDK 17 #28279
- ResponseEntity objects are accumulated in ConcurrentReferenceHashMap #28273
- NotWritablePropertyException when attempting to declaratively configure ClassLoader properties #28272
v5.3.18
β New Features
- Restrict access to property paths on Class references #28261
- Introduce cancel(boolean mayInterruptIfRunning) in ScheduledTask #28233
π Bug Fixes
- Move off deprecated API in
SessionTransactionData
#28234
π Documentation
- Introduce warnings in documentation of SerializationUtils #28246
- Update copyright date in reference manual #28237
@Transactional
test does not execute all JPA lifecycle callback methods #28228
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!