Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
v5.2.9.RELEASE
⭐ New Features
- HttpHeaders.setContentDispositionFormData should ignore empty filename #25769
- StringDecoder does not provide a way to configure the default charset #25762
- MimeMessageHelper.addAttachment: configurable encoding of attachment filename #25755
- Current log level not checked by LogAccessor supplier-enabled logging methods #25741
- PropertiesLoaderSupport should ignore socket/connect exceptions as well #25717
- Avoid repeated calls to getPathWithinApplication from UrlPathHelper.getLookupPathForRequest #25669
- Avoid full singleton lock for DefaultSingletonBeanRegistry.getSingleton(beanName, false) #25667
- XStreamMarshaller should avoid direct use of CompositeClassLoader which is not exported by XStream in OSGi #25662
- Avoid LinkedList performance issues through use of ArrayDeque #25652
- Introduce createContext() factory method in AbstractGenericContextLoader #25600
- Declare MessagePostProcessor as a
@FunctionalInterface
#25571 - Assert preconditions for MergedAnnotations.from() factory methods #25568
- Provide access to AbstractRoutingDataSource's resolved target DataSources #25544
- Possible optimization in UrlResource #25531
- Refine use of substring operations #25445
- Cache abstraction does not log hit / miss for synchronized access #25248
🪲 Bug Fixes
- Issue with Forwarded Header and Multiple Values #25737
- CallMetaDataContext.reconcileParameters overwrites cursor name #25707
- VerifyErrors when using SpEL compilation with Thymeleaf when invoking a default method defined in an interface #25706
- SQLErrorCodesFactory.getErrorCodes(DataSource) returns empty error codes if access to transactional connection fails #25681
- Make "org.springframework.util.unit.DataSize" class Serializable #25675
- Joda-Time presence check fails to detect Joda-Time 2.x specifically #25655
- Regression in SimpleThreadScope introduced in 5.2.7 #25618
- Potential integer overflow in ExecutorConfigurationSupport.setAwaitTerminationSeconds(int) and AbstractResourceBasedMessageSource.setCacheSeconds(int) #25613
- Remove session on 4xx response from WebSocket handshake #25608
- spring-jdbc don't set out parameter name from metadata for Postgresql function after issue#25399 #25588
- FileUrlResource isWritable method returns true if URL protocol is not indicating a file #25584
- Lazy dependency proxy does not populate bean dependencies #25562
- Bean creation fails with StackOverflowError after upgrading from 5.1.13 to 5.2.7 #25546
- StaticListableBeanFactory.isSingleton() returns false for singleton beans #25522
- Standalone MockMvc ignores
@RestControllerAdvice
annotation attributes #25520 - MockHttpServletResponse reset() does not reset charset field #25501
- AnnotationTypeMappings does not filter repeatable annotations #25483
- Wrong error message for type mismatch in jsonPath().value() #25480
- Fix infinite loop bug in AnnotationScanner #25429
- Overloaded
@Bean
method with name mismatch causes bean to be created twice (in case of ASM processing) #25263
📔 Documentation
- Prevent confusion about build(boolean) method in UriComponentsBuilder #25604
- Document how to specify Jackson JSON view serialization hints with
@RestController
and Webflux #25596 - Inconsistent log level in
@Bean
javadoc and ConfigurationClassEnhancer #25590 - Fix asciidoctor syntax for source #25539
- Improve Javadoc for
@RequestMapping
#params #25482 - Document that SimpleCacheManager requires caches to be initialized when not used as a bean #22988
🔨 Dependency Upgrades
- Upgrade to Reactor Dysprosium-SR12 #25730
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.1.18.RELEASE
⭐ New Features
- PropertiesLoaderSupport should ignore socket/connect exceptions as well #25720
- Avoid full singleton lock for DefaultSingletonBeanRegistry.getSingleton(beanName, false) #25695
- Possible optimization in UrlResource #25550
- Refine use of substring operations #25513
🪲 Bug Fixes
- FileUrlResource isWritable method returns true if URL protocol is not indicating a file #25739
- VerifyErrors when using SpEL compilation with Thymeleaf when invoking a default method defined in an interface #25711
- CallMetaDataContext.reconcileParameters overwrites cursor name #25708
- SQLErrorCodesFactory.getErrorCodes(DataSource) returns empty error codes if access to transactional connection fails #25692
- Make "org.springframework.util.unit.DataSize" class Serializable #25676
- Joda-Time presence check fails to detect Joda-Time 2.x specifically #25658
- Potential integer overflow in AbstractResourceBasedMessageSource.setCacheSeconds(int) #25642
- Lazy dependency proxy does not populate bean dependencies #25563
- StaticListableBeanFactory.isSingleton() returns false for singleton beans #25523
- MockHttpServletResponse reset() does not reset charset field #25510
📔 Documentation
- Document how to specify Jackson JSON view serialization hints with
@RestController
and Webflux #25704 - Prevent confusion about build(boolean) method in UriComponentsBuilder #25701
🔨 Dependency Upgrades
- Upgrade to Reactor Californium-SR21 #25731
v5.0.19.RELEASE
⭐ New Features
- PropertiesLoaderSupport should ignore socket/connect exceptions as well #25721
- Possible optimization in UrlResource #25551
- Refine use of substring operations #25514
🪲 Bug Fixes
- FileUrlResource isWritable method returns true if URL protocol is not indicating a file #25740
- VerifyErrors when using SpEL compilation with Thymeleaf when invoking a default method defined in an interface #25712
- CallMetaDataContext.reconcileParameters overwrites cursor name #25709
- SQLErrorCodesFactory.getErrorCodes(DataSource) returns empty error codes if access to transactional connection fails #25693
- Joda-Time presence check fails to detect Joda-Time 2.x specifically #25659
- Potential integer overflow in AbstractResourceBasedMessageSource.setCacheSeconds(int) #25643
- Lazy dependency proxy does not populate bean dependencies #25564
- StaticListableBeanFactory.isSingleton() returns false for singleton beans #25524
- MockHttpServletResponse reset() does not reset charset field #25511
📔 Documentation
v4.3.29.RELEASE
⭐ New Features
- PropertiesLoaderSupport should ignore socket/connect exceptions as well #25722
- Refine use of substring operations #25515
🪲 Bug Fixes
- VerifyErrors when using SpEL compilation with Thymeleaf when invoking a default method defined in an interface #25713
- SQLErrorCodesFactory.getErrorCodes(DataSource) returns empty error codes if access to transactional connection fails #25694
- Potential integer overflow in AbstractResourceBasedMessageSource.setCacheSeconds(int) #25644
- Lazy dependency proxy does not populate bean dependencies #25565
- Synchronized blocks in MethodOverrides are hurting concurrency #25549
- StaticListableBeanFactory.isSingleton() returns false for singleton beans #25525
- MockHttpServletResponse reset() does not reset charset field #25512
📔 Documentation
- Prevent confusion about build(boolean) method in UriComponentsBuilder #25703
v5.3.0-M2
⭐ New Features
- Introduce getBeanProvider variants with allowEagerInit flag #25559
- Allow to access the underlying ConnectionFactory from DatabaseClient #25521
- Optimize DefaultLifecycleProcessor::startBeans #25506
- Refactoring opportunity in HandlerExecutionChain #25500
- Support macros in crontab expressions #25471
- Introduce CronExpression #25464
- Use System.currentTimeMillis() in AbstractSockJsService #25447
- Simplified return statement #25415
- Improve UriComponents.sanitizeSource() #25401
- Use Math.min() in ExponentialBackOff #25381
- Allow auto grow for entries without default constructor in SpEL #25367
- Remove redundant Character.toLowerCase() in BeanPropertyRowMapper #25361
- Leverage spring.ignore.xml flag to avoid XmlBeanDefinitionReader #25338
- Leverage spring.ignore.xml flag to avoid SQLErrorCodeSQLExceptionTranslator #25335
- Check for valid IPv6 host in UriComponentsBuilder.fromUriString #25334
- Support use of RSocketClient #25332
- Enhance HandlerMappingIntrospector to cache parsed patterns #25312
- DefaultSubscriptionRegistry: Reduced thread contention #25298
- Support multiple Content-Language header values in MockHttpServletResponse #25281
- added possibility to extend ModelAttributeMethodArgumentResolver #25265
- WebSocketMessage's methods
fromMessage
andtoFrames
ignore Netty WebSocketFrame metadata #25099 - Support for pattern based origin cors configuration #25016
- Collect metrics during application context startup #24878
- Sort detected PersistenceExceptionTranslator beans #24644
- Constructor based bean binding should support url path variables, not only request parameters #24107
- Feature request: provide support for JSR 310 types in CronTrigger #23496
- RouterFunction does not respect path matching set in WebFluxConfigurer #23236
- Turn MethodArgumentNotValidException into subclass of BindException #23107
- Support for direct path lookups in WebFlux #22961
- ExceptionHandlerExceptionResolver should support exceptions from any handler #22619
@Scheduled
(cron = "0 0 0 ? * 5#3") is not supported #22436- Consider updating the default Hibernate dialect for MySQL databases #22326
- Spring MVC - Kotlin: Cannot bind MultipartFile in constructor [SPR-17640] #22169
- Support JSON streaming formats besides application/stream+json #21283
- Support raising exception with a custom HTTP status code #20336
- Support for the last day in month cron expression [SPR-15547] #20106
- Cron Expression validation [SPR-14933] #19500
- Cron expression with fixed weekday and fixed date may or may not lead to IllegalStateException (runaway search for next trigger) [SPR-8981] #13621
🪲 Bug Fixes
- MockHttpServletResponse's setCharacterEncoding() does not update contentType property #25536
- Bean overriding for 'taskExecutor' alias is not detected #25430
- Creating ServerRequest from MockHttpServletRequest changed behaviour 5.3.0-M1 #25353
- CaffeineCache does not support LoadingCache consistently #25173
- CronSequenceGenerator - Friday 13th issue [SPR-17036] #21574
📔 Documentation
- Use Groovy syntax highlighting in reference manual #25554
- Fix comment syntax in xml examples #25537
- Fix links in Javadoc #25448
- Fix typo in javadoc #25396
- Add logging reference documentation [SPR-17626] #22158
🔨 Dependency Upgrades
- Upgrade to Jackson 2.11.2 #25398
- Upgrade to Reactor 2020.0.0-M2 #25373
- Upgrade to RSocket 1.1 M1 #25331
- Upgrade to ASM 9.0 #24872
- Upgrade to Kotlin 1.4 RC #24171
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.8.RELEASE
⭐ New Features
- Defer creating logger in StandardWebSocketHandlerAdapter #25427
- MutablePropertySources will not find or remove proxied sources #25369
- Profiles should be comparable when created via Profiles.of() #25340
- Avoid re-creating RSocketRequester instance per subscriber #25330
- Hoist Class.getName() from String concatenation to dodge an issue related to profile pollution #25324
- Improve Random seed in SocketUtils #25321
- Support fragments in UriComponentsBuilder.fromHttpUrl() #25300
- Support for custom cache registration in CaffeineCacheManager #25230
- Don't get ContentCachingResponseWrapper in ShallowEtagHeaderFilter so that users can extend this wrapper #24976
- Unnecessarily alarming stack trace logged during scheduler resolution #23268
- Expose a setExceptionListener method in DefaultJmsListenerContainerFactory [SPR-17570] #22102
🪲 Bug fixes
- UriComponentsBuilder.cloneBuilder() cause sharing query parameters between builders #25423
- SimpleJdbcCall does not find stored function with PostgreSQL driver 42.2.11 #25399
- MappingJackson2HttpMessageConverter might be too specific in its Charset support #25322
- ReactorNetty websocket issue for multiple clients with different protocols #25315
- Mutating a ServerHttpRequest breaks the existing context path #25279
- ServerHttpRequest.getSslInfo() always returns null for reactor-netty HTTP/2 requests #25278
- NoRollbackFor rule causes TransactionAspectSupport to log unwarranted "exception overridden" error on WebSphere #25253
- AbstractJackson2HttpMessageConverter - Check for encoding breaks JSON to POJO de-serialization experience #25247
- The AbstractTemplateViewResolver class is not abstract #25240
- WebClient: NPE and leak in case connection is reset by server. #25216
- Oracle LOB segments holding TEMP space after executing SP using SimpleJdbcCall with SqlParameterSource #22972
- IllegalReferenceCountException happens when the operation was canceled #22594
- DefaultListableBeanFactory.getBean(Class) may throw NoSuchBeanDefinitionException when removeBeanDefinition is being called simultaneously to remove an unrelated bean #22263
📔 Documentation
- Clarify enforceInitMethod/enforceDestroyMethod default values in AbstractBeanDefinition #25402
- Improve JavaDoc for ConfigurableApplicationContext.refresh() #25380
- Fix interface and class names in examples in core-aop doc #25351
- Wording changes #25314
- Fix typo in Java example for handler class #25302
- Improve Javadoc for @value regarding supported expressions #25284
- Fix syntax in validation examples #25251
- Document exception handling limitations in TaskDecorator implementations (specifically for ThreadPoolTaskExecutor#submit) #25231
🔨 Dependency upgrades
❤️ Contributors
We’d like to thank all the contributors who worked on our current release!
v5.1.17.RELEASE
⭐ New Features
- Defer creating logger in StandardWebSocketHandlerAdapter #25433
- Unnecessarily alarming stack trace logged during scheduler resolution #25416
- MutablePropertySources will not find or remove proxied sources #25406
- Profiles should be comparable when created via Profiles.of() #25363
🪲 Bug fixes
- UriComponentsBuilder.cloneBuilder() cause sharing query parameters between builders #25424
- DefaultListableBeanFactory.getBean(Class) may throw NoSuchBeanDefinitionException when removeBeanDefinition is being called simultaneously to remove an unrelated bean #25421
- Oracle LOB segments holding TEMP space after executing SP using SimpleJdbcCall with SqlParameterSource #25417
- MappingJackson2HttpMessageConverter might be too specific in its Charset support #25343
- ServerHttpRequest.getSslInfo() always returns null for reactor-netty HTTP/2 requests #25286
- NoRollbackFor rule causes TransactionAspectSupport to log unwarranted "exception overridden" error on WebSphere #25267
- AbstractJackson2HttpMessageConverter - Check for encoding breaks JSON to POJO de-serialization experience #25252
- The AbstractTemplateViewResolver class is not abstract #25241
📔 Documentation
- Clarify enforceInitMethod/enforceDestroyMethod default values in AbstractBeanDefinition #25403
- Document exception handling limitations in TaskDecorator implementations (specifically for ThreadPoolTaskExecutor#submit) #25233
🔨 Dependency upgrades
- Upgrade to Reactor Californium-SR20 #25412
v5.0.18.RELEASE
⭐ New Features
- Defer creating logger in StandardWebSocketHandlerAdapter #25434
- Missing null checks in AbstractMessageChannel.addInterceptor/setInterceptors #25220
- Avoid full synchronization in AbstractRefreshableApplicationContext.getBeanFactory() since it can lead to massive thread blocking #25218
🪲 Bug fixes
- UriComponentsBuilder.cloneBuilder() cause sharing query parameters between builders #25425
- DefaultListableBeanFactory.getBean(Class) may throw NoSuchBeanDefinitionException when removeBeanDefinition is being called simultaneously to remove an unrelated bean #25422
- Oracle LOB segments holding TEMP space after executing SP using SimpleJdbcCall with SqlParameterSource #25418
- NoRollbackFor rule causes TransactionAspectSupport to log unwarranted "exception overridden" error on WebSphere #25268
- The AbstractTemplateViewResolver class is not abstract #25242
- MultiValueMapAdapter.getFirst fails with IndexOutOfBoundsException in case of empty List #25226
- WebSphereUowTransactionManager causes exception for PROPAGATION_SUPPORTS when timeout is specified #25224
- Avoid ClassCastException on IllegalArgumentException when invoking sync get cache method #25222
📔 Documentation
v4.3.28.RELEASE
⭐ New Features
- Defer creating logger in StandardWebSocketHandlerAdapter #25435
- Alignment of CORS default values with 5.x #25414
- Missing null checks in AbstractMessageChannel.addInterceptor/setInterceptors #25221
- Avoid full synchronization in AbstractRefreshableApplicationContext.getBeanFactory() since it can lead to massive thread blocking #25219
🪲 Bug fixes
- UriComponentsBuilder.cloneBuilder() cause sharing query parameters between builders #25426
- Oracle LOB segments holding TEMP space after executing SP using SimpleJdbcCall with SqlParameterSource #25419
- NoRollbackFor rule causes TransactionAspectSupport to log unwarranted "exception overridden" error on WebSphere #25269
- The AbstractTemplateViewResolver class is not abstract #25243
- MultiValueMapAdapter.getFirst fails with IndexOutOfBoundsException in case of empty List #25227
- WebSphereUowTransactionManager causes exception for PROPAGATION_SUPPORTS when timeout is specified #25225
- Avoid ClassCastException on IllegalArgumentException when invoking sync get cache method #25223
📔 Documentation
v5.3.0-M1
⭐ New Features
- Use @SafeVarargs in Jackson builder and factory #25311
- Use JDBC 4 API for connection validation #25305
- Reduce String creation in BeanPropertyRowMapper #25301
- Align DispatcherServlet defaults for Java and XML #25260
- Make DispatcherServlet.properties loading lazy #25257
- Rollback reactive transaction on cancel #25256
- Support multi-value X-Forwarded-Prefix headers #25254
- Refactor method name dispatching to switch statements in AutowireUtils #25199
- Disable and remove unsupported features from native images #25179
- Refactor method name dispatching to switch statements #25170
- Refactor method name dispatching to switch statements #25163
- Provide a flag to disable SpEL support #25153
- Provide a flag to disable XML support #25151
- Allow customization of JPA EntityManager before use #25125
- Make use of HttpServletMapping when available #25100
- Add support for R2DBC #25065
- Support configurable timeout in @transactional #25052
- Use same default ClassLoader in SpringFactoriesLoader #24992
- SpringFactoriesLoader should filter out duplicates #24985
- DefaultResourceLoader's default constructor makes it easy to introduce a ClassLoader leak #24957
- Reject "/path/**/other" patterns in PathPatternParser #24952
- Support for PathPatternParser in Spring MVC #24945
- Introduce ClientHttpConnector test suite #24941
- Add file parameters as request parts in HtmlUnitRequestBuilder #24926
- BeanNameAutoProxyCreator proxies the wrong beans when custom TargetSourceCreator specified #24915
- Expose multipart data in ServerRequest #24909
- VersionResourceResolver should use weak ETags to allow for HTTP compression #24898
- Extend transaction attributes with labels #24890
- Avoid using regex matching for static patterns #24887
- Align TransactionManagementConfigurer support in TestContext framework with production #24869
- Add Encoder and Decoder for Netty ByteBuf #24866
- Allow setting SerializationInclusion with JsonInclude.Value #24824
- ObjectProvider.ifAvailable throws exception for scoped bean without an active scope #24822
- Wrap XMLStreamException in DecodingException #24778
- Improve MediaType parsing performance #24769
- Add BeanPostProcessors in bulk #24756
- Integrate Apache Http client with WebClient #24700
- Improve performance of AbstractAutowireCapableBeanFactory#predictBeanType #24681
- Improve efficiency of mutating of ClientHttpResponse and ServerHttpRequest #24680
- Support user-defined key type in JDBC KeyHolder #24655
- PartsHttpMessageWriter introduced #24535
- Support URI templates in RequestEntity #24406
- Allow re-initialization of DataBinder to and from direct field or bean property access #24347
- Add support for metadata push to RSocketRequester #24322
- Support setting spring.test.constructor.autowire.mode via junit-platform.properties file #24285
- Honor generic type information in BeanUtils.copyProperties() #24281
- Fix behavior in ExceptionHandlerExceptionResolver.setResponseBodyAdvice #24204
- Support for RxJava 3 #24170
- Add Nullable to Joinpoint and MethodInterceptor #24117
- DataSourceTransactionManager does not consider SQLExceptionTranslator on commit #24064
- Turn off useSuffixPatternMatching by default #23915
- Support matching against multiple header values in HeaderAssertions #23878
- Multipart request support in MockRestServiceServer #23772
- Enhanced form data request support in MockRestServiceServer #23671
- Add support for X-Forwarded-For and Forwarded for #23582
- @ExceptionHandler to keep nesting beyond the first cause #23380
- Support separate annotation introspectors in Jackson2ObjectMapperBuilder #23017
- Improve GraalVM native support #22968
- Provide access to the WebSocket close status in WebFlux #22079
- Make WebFlux multipart support fully Reactive [SPR-17122] #21659
- Add iterable JDBC template to process large amount of data [SPR-13900] #18474
🪲 Bug fixes
- AllEncompassingFormHttpMessageConverter now uses both JAXB and Jackson by default #25291
- Align @RequestPart support in WebFlux with Spring MVC #22973
📔 Documentation
- Fix obsolete link in Kotlin docs #25192
- Switch to googlecode theme for syntax highlighting in reference manual #24865
- fix WebRequest.checkNotModified docs #1035
🔨 Dependency upgrades
- Upgrade to Gradle 6.5 #25180
- Upgrade to Reactor 2020.0.0 M1 #25085
- Upgrade to Dom4j 2.1.3 and Jaxen 1.2.0 #25078
- Upgrade to Gradle 6.4 #25020
- Upgrade to ASM 8.1 #24872
- Upgrade to TestNG 7.1.0 #24298
- Upgrade to Groovy 3.0 #24215
- Upgrade to JUnit 4.13 #22894
❤️ Contributors
We’d like to thank all the contributors who worked on our current release!