Skip to content

Releases: spring-projects/spring-framework

v5.2.9.RELEASE

15 Sep 08:58
Compare
Choose a tag to compare

⭐ 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

15 Sep 10:40
Compare
Choose a tag to compare

⭐ 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

15 Sep 11:25
Compare
Choose a tag to compare

⭐ 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

  • Document how to specify Jackson JSON view serialization hints with @RestController and Webflux #25705
  • Prevent confusion about build(boolean) method in UriComponentsBuilder #25702

v4.3.29.RELEASE

15 Sep 11:42
Compare
Choose a tag to compare

⭐ 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

11 Aug 09:00
Compare
Choose a tag to compare
v5.3.0-M2 Pre-release
Pre-release

⭐ 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 and toFrames 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

21 Jul 09:06
Compare
Choose a tag to compare

⭐ 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

  • Upgrade to Reactor Dysprosium-SR10 #25376
  • Upgrade to nohttp 0.0.5 #25266

❤️ Contributors

We’d like to thank all the contributors who worked on our current release!

v5.1.17.RELEASE

21 Jul 08:36
Compare
Choose a tag to compare

⭐ 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

21 Jul 08:33
Compare
Choose a tag to compare

⭐ 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

  • Clarify enforceInitMethod/enforceDestroyMethod default values in AbstractBeanDefinition #25404
  • Document exception handling limitations in TaskDecorator implementations (specifically for ThreadPoolTaskExecutor#submit) #25234

v4.3.28.RELEASE

21 Jul 08:29
Compare
Choose a tag to compare

⭐ 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

  • Clarify enforceInitMethod/enforceDestroyMethod default values in AbstractBeanDefinition #25405
  • Document exception handling limitations in TaskDecorator implementations (specifically for ThreadPoolTaskExecutor#submit) #25235

v5.3.0-M1

25 Jun 08:12
Compare
Choose a tag to compare
v5.3.0-M1 Pre-release
Pre-release

⭐ 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!

Read more