Skip to content

Releases: spring-projects/spring-framework

4.2.9 Release

17 Jan 14:22
Compare
Choose a tag to compare

⭐ New Features

  • Default async timeout handling results in Logged Exception for Tomcat 8.5.x [SPR-14739] #19305
  • Improve performance of StompEncoder.encode() [SPR-14747] #19313
  • StompSubProtocolHandler makes the same assumption about header accessor as SimpleBrokerMessageHandler used to [SPR-14791] #19357
  • Normalize resource URL in ResourceServlet [SPR-14946] #19513

🪲 Bug Fixes

  • ObjectToObjectConverter should be able to use constructors on non-public classes [SPR-14304] #18876
  • Async advisor retrieval blocks when triggered by singleton init method [SPR-14324] #18896
  • IPv6 + Origin header + X-Forwarded-Host header gives NumberFormatException (Safari10 / CORS) [SPR-14761] #19327
  • SockJs heartbeat causes deadlock with XHR polling [SPR-14833] #19399
  • SimpleApplicationEventMulticaster should not generally suppress ClassCastException [SPR-14846] #19412
  • NPE PropertyOrFieldReference$AccessorLValue due to concurrency issue [SPR-14850] #19416
  • AbstractSockJsSession deadlock when tomcat WsSession is closing [SPR-14917] #19484
  • List-to-String conversion exception does not refer to element type [SPR-14971] #19537
  • ImportAware.setImportMetadata not invoked if import inherited from superclass with negative condition [SPR-14972] #19538
  • Concurrency problem in DeferredResult: potential double execution of handleResult [SPR-14978] #19544
  • Pointcut evaluation fails against AbstractHandlerMethodMapping$MappingRegistry with AspectJ 1.8.10 [SPR-15019] #19586
  • MBeanExporter fails against null beans [SPR-15031] #19598

📔 Documentation

  • @lookup method injection method documentation [SPR-14765] #19331
  • Document supported return types for @Async methods [SPR-14881] #19447
  • SpEL and Date Literals [SPR-14987] #19553

3.2.18 Release

17 Jan 15:44
Compare
Choose a tag to compare

⭐ New Features

  • Allow method inlining of ObjectUtils.nullSafeEquals() [SPR-14349] #18921
  • Normalize resource URL in ResourceServlet [SPR-14946] #19513
  • ModelAndViewResolver still refers to raw Class type [SPR-7860] #12517

🪲 Bug Fixes

  • Constructor sets the source incorrectly in org.springframework.beans.PropertyValue [SPR-8337] #12985
  • ObjectToObjectConverter should be able to use constructors on non-public classes [SPR-14304] #18876
  • Async advisor retrieval blocks when triggered by singleton init method [SPR-14324] #18896
  • Deadlock while creating a new thread on bean initialization with transactional code invocation [SPR-14388] #18961
  • CronSequenceGenerator causes StackOverflowError with reversed range values [SPR-14462] #19031
  • Ineffective synchronization in StandardTypeConverter constructor [SPR-14465] #19034
  • ResourcePatternUtils.getResourcePatternResolver does not accept null arg [SPR-14500] #19069
  • LinkedCaseInsensitiveMap doesn't override HashMap.clone() [SPR-14509] #19078
  • StackOverflowError for advisor search against factory-bean reference to FactoryBean [SPR-14551] #19119
  • StringUtils.parseLocaleString(): does not parse locale string in java 7 for Serbian (Latin) [SPR-14718] #19283
  • Concurrency problem in DeferredResult: potential double execution of handleResult [SPR-14978] #19544
  • MBeanExporter fails against null beans [SPR-15031] #19598

📔 Documentation

  • Ambiguous sentence in the cache documentation [SPR-14399] #18017
  • SpEL and Date Literals [SPR-14987] #19553

5.0 M3 Release

17 Jan 14:18
Compare
Choose a tag to compare

⭐ New Features

  • Consider making MessageChannel a @FunctionalInterface [SPR-14854] #19420
  • Improve WebClient error handling [SPR-14852] #19418
  • Add support for RxJava 2 Maybe type [SPR-14843] #19409
  • ApplicationContext-based initialization of reactive WebFilter, WebHandler, WebExceptionHandler infrastructure [SPR-14837] #19403
  • Support @ResponseStatus on reactive controller methods [SPR-14830] #19396
  • Do not use Jackson2JsonEncoder for byte array [SPR-14825] #19391
  • Remove not existing NativeJdbcExtractors from documentation [SPR-14810] #19376
  • Add support for URI templates in redirectedUrl() & forwardedUrl() [SPR-14790] #19356
  • Remove @Inherited from @Primary [SPR-14780] #19346
  • Only print printable content for request and response body in Spring MVC Test [SPR-14776] #19342
  • Add @EnableWebReactive and WebReactiveConfigurerAdapter configuration model [SPR-14754] #19320
  • Close resources in WebClient and ClientHttpConnector [SPR-14750] #19316
  • Add support for context paths in Spring Web Reactive [SPR-14726] #19291
  • Print request body in PrintingResultHandler in Spring MVC Test [SPR-14717] #19282
  • Add way to obtain Principal from ServerWebExchange [SPR-14680] #19244
  • Support @EnabledIf and @DisabledIf without loading ApplicationContext [SPR-14649] #19215
  • Reactive HTTP request CORS Support [SPR-14545] #19113
  • Reactive HTTP request @InitBinder support [SPR-14543] #19111
  • Reactive HTTP request @ModelAttribute support [SPR-14542] #19110
  • Reactive HTTP request data binding [SPR-14541] #19109
  • Reactive HttpMessageReader/Writer for "x-www-form-url-encoded" data [SPR-14540] #19108
  • Introduce HttpHeaders getContentDisposition() and setContentDisposition() [SPR-14408] #18979

🪲 Bug Fixes

  • Returning Mono<ResponseEntity<?>> causes NPE [SPR-14877] #19443
  • Wrong HandlerResultHandler select when dealing with exceptions [SPR-14876] #19442
  • [spring-web-reactive] NPE in RequestMappingHandlerAdapter at Startup [SPR-14869] #19435
  • JsonObjectDecoder fails to decode some splitted source [SPR-14859] #19425
  • Fix HttpRequest#getURI() with Netty based engines [SPR-14794] #19360
  • Flux looses messages when using a Processor from another Thread [SPR-14772] #19338
  • Error while serializing ServerSentEvent [SPR-14748] #19314
  • CssLinkResourceTransformer is incompatible with ContentVersionStrategy when using Caching [SPR-14597] #19166

📔 Documentation

  • Replace J2EE with Java EE [SPR-14811] #19377
  • Remove OracleLobHandler from documentation [SPR-14809] #19375
  • Reference Documentation: instruct how RestTemplate should handle the errors thrown about @Validated (JSR 303/349) [SPR-14724] #19289

4.3.4 Release

17 Jan 14:22
Compare
Choose a tag to compare

⭐ New Features

  • Improve exception when failing to create a specific bean due to a NoClassDefFoundError [SPR-14883] #19449
  • ApplicationListenerDetector should ignore non-managed bean instances [SPR-14879] #19445
  • Sockjs XHR Fallback on already existing WebSocketServerSockJsSession [SPR-14867] #19433
  • Use String.intern() for Annotation and Class scanning [SPR-14862] #19428
  • Log exception from @ExceptionHandler at higher level than debug [SPR-14861] #19427
  • Possibility to use org.springframework.cache.support.NoOpCacheManager.NoOpCache as public class as NoOpCacheManager [SPR-14856] #19422
  • TransactionStatus.flush() should trigger TransactionSynchronization.flush() when using DataSourceTransactionManager [SPR-14847] #19413
  • Make HttpComponentsAsyncClientHttpRequest abortable [SPR-14845] #19411
  • AnnotationFormatterFactory should support @AliasFor [SPR-14844] #19410
  • Type information not available on NoSuchBeanDefinitionException for collections [SPR-14831] #19397
  • ResolvableType equals method should not consider TypeProvider source [SPR-14826] #19392
  • GenericConversionService.addConverter should be able to determine generic types from target class behind proxy [SPR-14822] #19388
  • Allow type produced by ScopedProxyFactoryBean to be determined before singleton is created [SPR-14816] #19382
  • Hibernate 5 LocalSessionFactoryBean should allow for dynamic mapping registration (like for Hibernate 4) [SPR-14815] #19381
  • IllegalArgumentException: HttpEntity parameter 'null' [SPR-14799] #19365
  • Better encapsulate and Javadoc CORS configuration defaults [SPR-14798] #19364
  • StompSubProtocolHandler makes the same assumption about header accessor as SimpleBrokerMessageHandler used to [SPR-14791] #19357
  • Inner bean behind BeanFactoryPostProcessor should be able to receive application events [SPR-14783] #19349
  • Reduce String allocations in TransactionAspectSupport.methodIdentification() [SPR-14760] #19326
  • Improve performance of StompEncoder.encode() [SPR-14747] #19313
  • Netty4ClientHttpRequestFactory should configure a default SslContext [SPR-14744] #19310
  • Default async timeout handling results in Logged Exception for Tomcat 8.5.x [SPR-14739] #19305
  • YAML + PropertyPlaceholderConfigurer needs to process non-String values as well [SPR-14737] #19303
  • Method getMergedProperties in ReloadableResourceBundleMessageSource does not set fileTimestamp [SPR-14583] #19152
  • Allow customization of TestDispatcherServlet when using @MockMvcTest [SPR-14277] #18849
  • context:property-placeholder should accept comma-separated list as placeholder value for its location attribute [SPR-10502] #15135
  • BindingResult should not hold on to ConversionService when serialized in session [SPR-8282] #12930

🪲 Bug Fixes

  • NoSuchMethodError when using AnnotatedElementAdapter with Java 7 [SPR-14872] #19438
  • SpEL: Compiled OpNE should favor equals() to != [SPR-14863] #19429
  • Allow @Cacheable method to return java.util.Optional variant of cached value with @Cacheable(sync=true) [SPR-14853] #19419
  • ResourceHttpRequestHandler no longer works as prototype bean [SPR-14851] #19417
  • NPE PropertyOrFieldReference$AccessorLValue due to concurrency issue [SPR-14850] #19416
  • LiveBeansView#unregister should not rely on ApplicationContext#getApplicationName [SPR-14848] #19414
  • SimpleApplicationEventMulticaster should not generally suppress ClassCastException [SPR-14846] #19412
  • SockJs heartbeat causes deadlock with XHR polling [SPR-14833] #19399
  • Cache annotation lookup in 4.3 finds more annotations than in 4.2 [SPR-14801] #19367
  • ModelAndView's setStatus does not work for @ExceptionHandler methods [SPR-14796] #19362
  • Access-Control-Allow-Methods contains duplicate HTTP methods [SPR-14792] #19358
  • @CacheConfig(cacheNames) broken when used on interface [SPR-14781] #19347
  • SpringValidatorAdapter's ResolvableAttribute is not serializable [SPR-14778] #19344
  • ETag header is removed from PUT/POST/PATCH responses [SPR-14767] #19333
  • IPv6 + Origin header + X-Forwarded-Host header gives NumberFormatException (Safari10 / CORS) [SPR-14761] #19327
  • DefaultPersistenceUnitManager may configure a persistence unit root URL that does not point to a file or directory [SPR-14749] #19315
  • Async advisor retrieval blocks when triggered by singleton init method [SPR-14324] #18896
  • ObjectToObjectConverter should be able to use constructors on non-public classes [SPR-14304] #18876

📔 Documentation

  • Document supported return types for @Async methods [SPR-14881] #19447
  • The contract for StringValueResolver.resolveStringValue should be more explicit [SPR-14842] #19408
  • Bad Table Rendering in Default Exception Handling Documentation [SPR-14782] #19348
  • @lookup method injection method documentation [SPR-14765] #19331

5.0 M2 Release

17 Jan 14:18
Compare
Choose a tag to compare

⭐ New Features

  • Improve error handling in reactive SSE support when the remote channel is closed [SPR-14538] #22189
  • Add WebApplicationInitializers for Web Reactive [SPR-14713] #19278
  • Consider to make ApplicationEventPublisher as @FunctionalInterface [SPR-14699] #19263
  • Expose Channel on Resource [SPR-14698] #19262
  • Provide annotated controller hints to codecs and JsonView support [SPR-14693] #19257
  • Change default file extension in AppCacheManifestTransformer [SPR-14687] #19251
  • Add HttpBasic ClientWebRequestPostProcessor [SPR-14682] #19246
  • Add ResourceRegionHttpMessageWriter [SPR-14664] #19228
  • Add ServerWebExchange argument resolver [SPR-14658] #19223
  • Introduce support for enabling JUnit Jupiter tests with SpEL expressions [SPR-14644] #19210
  • Support for RxJava 2 [SPR-14628] #19195
  • Introduce support for disabling JUnit Jupiter tests with SpEL expressions [SPR-14614] #19181
  • Missing String return type from reactive @Controller doc at Ref Manual [SPR-14565] #19134
  • Reactive HTTP request "check not modified" support [SPR-14522] #19091
  • Reactive static resource handler [SPR-14521] #19090
  • HTML5 Application Cache Manifest not served with Content-Type "text/cache-manifest" [SPR-14510] #19079
  • ClientHttpRequestInterceptor for WebClient [SPR-14502] #19071
  • Add Smile and CBOR Jackson data formats support [SPR-14435] #19006
  • Reactive request and response "mocks" [SPR-14421] #18992
  • Allow Resources resolved through the resource chain to update the response [SPR-14264] #18836
  • Support nested test classes with SpringClassRule & SpringMethodRule [SPR-14150] #18722
  • Update RestTemplate to respect @Order for ClientHttpRequestInterceptor [SPR-13971] #18543
  • HttpMessageConverterExtractor should wrap HttpMessageNotReadableException in RestClientExceptions [SPR-13592] #18170
  • Align existing checkNotModified support in Spring MVC with same on the reactive side [SPR-14659] #18168
  • New controller for Spring MVC using Lambda [SPR-12954] #17546
  • Spring-specific index file for component candidate classes [SPR-11890] #16509
  • Allow to specify bean qualifier in an AOP @Around / @Before / ... [SPR-11217] #15842
  • Allow for concurrent test execution in the TestContext framework [SPR-5863] #10532

🪲 Bug Fixes

  • Exception during initialisaton of resource handling at WebReactiveConfiguration [SPR-14735] #19301
  • Reactive path matching does not consider servlet context path [SPR-14714] #19279
  • Handle ResponseEntity with null bodies [SPR-14663] #19227
  • Inconsistent handling of ResponseStatusExceptions [SPR-14618] #19185
  • ReactorHttpClientConnector ignores SSL support [SPR-14593] #19162
  • Encoding of flux data is incorrect [SPR-14586] #19155
  • NoSuchElementException when receiving a HTTP 401 with WebClient [SPR-14582] #19151
  • Let users control reactive SSE stream completion [SPR-14578] #19147
  • Reactive controller methods annotated with @PathVariable aren't invoked [SPR-14553] #19121

4.3.3 Release

17 Jan 14:22
Compare
Choose a tag to compare

⭐ New Features

  • ScriptTemplateView should check template resource [SPR-14729] #19294
  • Introduce 'value' alias for @Bean's 'name' attribute [SPR-14728] #19293
  • Add SPI to customize the qualifiers to use for a particular bean [SPR-14725] #19290
  • Don't log property values in PropertySourcesPropertyResolver by default [SPR-14709] #19274
  • AbstractPollingMessageListenerContainer's workaround for Tibco causes performance delays during ems failover [SPR-14697] #19261
  • Consistent *Aware callbacks for TypeFilters, ImportSelectors and ImportBeanDefinitionRegistrars [SPR-14686] #19250
  • ConfigurationClassParser does not use ApplicationContext's ResourceLoader for its MetadataReaderFactory [SPR-14684] #19248
  • Better Exception Message for JMS Jackson Converter Error [SPR-14672] #19236
  • Default async request timeout handling does not work with Jetty 9.x [SPR-14669] #19233
  • Allow @PathVariable to be optional [SPR-14646] #19212
  • Optimize ordered event listener performance [SPR-14642] #19208
  • CommonsMultipartResolver should explicitly convert FileSizeLimitExceededException next to SizeLimitExceededException [SPR-14638] #19204
  • Improve performance of StompCommand.getMessageType() [SPR-14636] #19203
  • Consistent comma splitting without regex overhead (e.g. in MediaType/MimeType) [SPR-14635] #19202
  • ListBeansView should also expose aliases [SPR-14632] #19199
  • Protect against getParameterType cursor leak with Oracle 12c JDBC driver [SPR-14629] #19196
  • GenericApplicationContext should pick up ClassLoader from custom ResourceLoader [SPR-14626] #19193
  • Improve performance of assertion in StompSubProtocolHandler [SPR-14624] #19191
  • Avoid creation of lazy candidates when the primary bean is injected [SPR-14611] #19178
  • Allow specifying CompilationCustomizer for Groovy based beans [SPR-14585] #19154
  • Allow programmatic registration of bean definitions with a ResolvableType [SPR-14580] #19149
  • Avoid repeated getParameterType calls for setNull with Oracle 12c driver [SPR-14574] #19143
  • MockClientHttpResponse should close stream [SPR-14563] #19132
  • HttpEntityMethodProcessor should not throw IllegalArgumentExceptions for invalid If-None-Match headers [SPR-14559] #19127
  • PathEditor returns wrong result for absolute path in servletContext.getRealPath(...) [SPR-14549] #19117
  • HttpHeaders.setContentDispositionFormData() doesn't encode non-acsii characters correctly [SPR-14547] #19115
  • MockMvcResultMatchers.jsonPath(String).value() should have a matching method to declare the expected type [SPR-14498] #19067
  • findDefaultEntityManagerFactory should consider EMF bean's primary flag [SPR-7549] #12206

🪲 Bug Fixes

  • exception during websocket client close [SPR-14721] #19286
  • StringUtils.parseLocaleString(): does not parse locale string in java 7 for Serbian (Latin) [SPR-14718] #19283
  • NPE during websocket disconnect [SPR-14703] #19268
  • HibernateExceptionTranslator translating to InvalidDataAccessApiUsageException when using vanilla Hibernate [SPR-14681] #19245
  • Spring 4.3.2 HibernateTemplate#findByNamedQuery isn't compatible with Hibernate 5.0 [SPR-14676] #19240
  • Performance regression when scheduling is enabled and context contains URL beans [SPR-14666] #19230
  • TypeConverterSupport does not propagate custom exceptions anymore [SPR-14661] #19225
  • ResolvableType for a raw type is not assignable to generic types of the same class [SPR-14648] #19214
  • Fix assertions in StompHeaderAccessor [SPR-14625] #19192
  • Missing MessageMethodArgumentResolver default constructor [SPR-14616] #19183
  • Transaction manager cache fails to repopulate when multiple transaction managers defined [SPR-14609] #19177
  • OutOfMemoryError caused by nested UnsatisfiedDependencyExceptions [SPR-14607] #19175
  • WebMvcConfigurer#extendHandlerExceptionResolvers is not invoked [SPR-14599] #19168
  • NoSuchBeanDefinitionException message shows internal array class names [SPR-14595] #19164
  • Improve documentation for Cacheable#result (re: Optional wrapper) [SPR-14587] #19156
  • HtmlUnitRequestBuilder corrupts the parent RequestBuilder [SPR-14584] #19153
  • When favorPathExtension is false ResourceHttpRequestHandler serves resources with different content type in 4.3 compared to 4.2 [SPR-14577] #19146
  • StompSubProtocolHandler responds with ERROR (Session closed.) on DISCONNECT when using SimpleBrokerMessageHandler [SPR-14568] #19137
  • SockJS heartbeat is causing application send Message to fail similar to (SPR-14356) [SPR-14564] #19133
  • ArrayIndexOutOfBoundsException in MethodBasedEvaluationContext [SPR-14554] #19122
  • StackOverflowError for advisor search against factory-bean reference to FactoryBean [SPR-14551] #19119
  • Default connection release mode inconsistent with Hibernate 5.1.1 [SPR-14548] #19116
  • StackOverflowError at AbstractJackson2HttpMessageConverter.resolveVariable [SPR-14520] #19089
  • Regression: Insert statement fails with inconsistent datatypes on Oracle 12c driver [SPR-14191] #18764
  • Constructor sets the source incorrectly in org.springframework.beans.PropertyValue [SPR-8337] #12985

📔 Documentation

  • Update CONTRIBUTING.md to require use of UTF-8 (instead of ISO-8859-1)) [SPR-14674] #19238
  • NoHandlerFoundException is mapped to 404 twice [SPR-14598] #19167
  • @Configuration constructor behaviour documentation differs between Reference Documentation and API docs [SPR-14552] #19120

4.2.8 Release

17 Jan 14:32
Compare
Choose a tag to compare

⭐ New Features

  • When I try to acquire MD5 using DigestUtils, java.lang.OutOfMemoryError occurs. [SPR-14427] #18998
  • Avoid canonicalName call for already-seen bean name [SPR-14433] #19004
  • @RequestMapping consumes/produces InvalidMediaTypeException should mention offending class & method [SPR-14452] #19021
  • UrlPathHelper in PathExtensionContentNegotiationStrategy should be configurable [SPR-14454] #19023
  • Avoid JNDI property lookup attempts for invalid JNDI keys [SPR-14518] #19087
  • Avoid repeated getParameterType calls for setNull with Oracle 12c driver [SPR-14574] #19143
  • Improve performance of assertion in StompSubProtocolHandler [SPR-14624] #19191
  • Protect against getParameterType cursor leak with Oracle 12c JDBC driver [SPR-14629] #19196
  • Improve performance of StompCommand.getMessageType() [SPR-14636] #19203
  • CommonsMultipartResolver should explicitly convert FileSizeLimitExceededException next to SizeLimitExceededException [SPR-14638] #19204
  • Default async request timeout handling does not work with Jetty 9.x [SPR-14669] #19233
  • Better Exception Message for JMS Jackson Converter Error [SPR-14672] #19236
  • AbstractPollingMessageListenerContainer's workaround for Tibco causes performance delays during ems failover [SPR-14697] #19261
  • ScriptTemplateView should check template resource [SPR-14729] #19294

🪲 Bug Fixes

  • Constructor sets the source incorrectly in org.springframework.beans.PropertyValue [SPR-8337] #12985
  • ConfigurationClassParser needs to load annotations through source class loader [SPR-10343] #14977
  • Regression: Insert statement fails with inconsistent datatypes on Oracle 12c driver [SPR-14191] #18764
  • SSE: Terminating chunk not sent using tomcat >= 8.0.35 [SPR-14444] #19014
  • MethodBasedEvaluationContext.lazyLoadArguments() execution fails for empty variable arguments call [SPR-14453] #19022
  • CronSequenceGenerator causes StackOverflowError with reversed range values [SPR-14462] #19031
  • Ineffective synchronization in StandardTypeConverter constructor [SPR-14465] #19034
  • MessageHeaderAccessor doesn't remove headers if they are null [SPR-14468] #19037
  • ResourcePatternUtils.getResourcePatternResolver does not accept null arg [SPR-14500] #19069
  • LinkedCaseInsensitiveMap doesn't override HashMap.clone() [SPR-14509] #19078
  • Do not fail with a circular @Import error caused by an @ComponentScan [SPR-14517] #19086
  • StackOverflowError for advisor search against factory-bean reference to FactoryBean [SPR-14551] #19119
  • ArrayIndexOutOfBoundsException in MethodBasedEvaluationContext [SPR-14554] #19122
  • SockJS heartbeat is causing application send Message to fail similar to (SPR-14356) [SPR-14564] #19133
  • StompSubProtocolHandler responds with ERROR (Session closed.) on DISCONNECT when using SimpleBrokerMessageHandler [SPR-14568] #19137
  • Fix assertions in StompHeaderAccessor [SPR-14625] #19192
  • ResolvableType for a raw type is not assignable to generic types of the same class [SPR-14648] #19214
  • TypeConverterSupport does not propagate custom exceptions anymore [SPR-14661] #19225
  • NPE during websocket disconnect [SPR-14703] #19268
  • StringUtils.parseLocaleString(): does not parse locale string in java 7 for Serbian (Latin) [SPR-14718] #19283
  • exception during websocket client close [SPR-14721] #19286

📔 Documentation

  • NoHandlerFoundException is mapped to 404 twice [SPR-14598] #19167

5.0 M1 Release

17 Jan 14:18
Compare
Choose a tag to compare

⭐ New Features

  • Revise encoding steps towards use of JDK Charset and StandardCharsets [SPR-14492] #19061
  • Avoid deprecated Class.newInstance in favor of constructor-based instantiation [SPR-14486] #19055
  • Drop mock.staticmock package from spring-aspects [SPR-14485] #19054
  • Resource.isFile() and JAF MediaTypeFactory [SPR-14484] #19053
  • Comprehensive Servlet 3.1 support in spring-web and spring-test [SPR-14467] #19036
  • Support suppressed exceptions in the TestContext framework [SPR-14459] #19028
  • Introduce Supplier message support in org.springframework.util.Assert [SPR-14450] #19020
  • Core Spring interfaces declared with Java 8 default methods and @FunctionalInterface markers [SPR-14432] #19003
  • Reactive web module [SPR-14161] #18733
  • HTTP cookie abstraction [SPR-14160] #18732
  • Composition adapters for Reactive Streams [SPR-14159] #18731
  • Reactive serialization & deserialization [SPR-14156] #18728
  • ByteBuffer abstraction [SPR-14155] #18727
  • Reactive Web client [SPR-14154] #18726
  • Reactive server web support [SPR-14153] #18725
  • Reactive client and server HTTP adapters [SPR-14152] #18724
  • Introduce support for creating a MethodParameter from a Java 8 Parameter [SPR-14055] #18627
  • XMLUnit 2.x support [SPR-14043] #18615
  • Better synchronization in ConcurrentMapCache [SPR-13810] #18383
  • ProtobufHttpMessageConverter support for protobuf 3.0.0-beta4 [SPR-13589] #18166
  • Introduce support for JUnit 5 in the TestContext framework [SPR-13575] #18151
  • Validate method parameter index via Java 8 Method.getParameterCount() [SPR-13456] #18036
  • Introduce before/after test execution callbacks in the TestContext framework [SPR-4365] #9043

🪲 Bug Fixes

  • ReactorClientHttpConnector assumes that URI.port is valid [SPR-14477] #19046
  • Misleading exception message for invalid MethodParameter instance [SPR-14466] #19035

📔 Documentation

  • Move "What's New" reference manual chapter to the wiki [SPR-14449] #19019

4.3.2 Release

17 Jan 14:22
Compare
Choose a tag to compare

⭐ New Features

  • Avoid JNDI property lookup attempts for invalid JNDI keys [SPR-14518] #19087
  • Cache limit for destination cache in SimpleBrokerMessageHandler can't be altered [SPR-14516] #19085
  • HeaderContentNegotiationStrategy does not support multiple Accept headers [SPR-14506] #19075
  • Non-helpful NoSuchBeanDefinitionException rather than BeanNotOfRequiredTypeException due to creation order [SPR-14504] #19073
  • DataSource adapters should expose setCatalog/setSchema next to setUsername/setPassword [SPR-14501] #19070
  • GenericSqlQuery configured with RowMapper instance [SPR-14489] #19058
  • SerializableTypeWrapper should reobtain type accessors from declaring interface [SPR-14487] #19056
  • Avoid dependency on WebUtils for extracting file extension [SPR-14479] #19048
  • Workaround for Hibernate bug: setCurrentTenantIdentifierResolver not respected [SPR-14476] #19045
  • Missing tests for async request handling with StreamingResponseBody [SPR-14456] #19025
  • Hibernate5 LocalSessionFactoryBean does not translate javax.persistence exceptions [SPR-14455] #19024
  • UrlPathHelper in PathExtensionContentNegotiationStrategy should be configurable [SPR-14454] #19023
  • @RequestMapping consumes/produces InvalidMediaTypeException should mention offending class & method [SPR-14452] #19021
  • AnnotationMetadataReadingVisitor does not honour @AliasFor [SPR-14437] #19008
  • Add PathEditor to enable conversion to java.nio.file.Path [SPR-14436] #19007
  • Avoid canonicalName call for already-seen bean name [SPR-14433] #19004
  • When I try to acquire MD5 using DigestUtils, java.lang.OutOfMemoryError occurs. [SPR-14427] #18998

🪲 Bug Fixes

  • Do not fail with a circular @Import error caused by an @ComponentScan [SPR-14517] #19086
  • Transaction manager bean in TransactionInterceptor retained after JUnit test class completes [SPR-14511] #19080
  • LinkedCaseInsensitiveMap doesn't override HashMap.clone() [SPR-14509] #19078
  • ResourcePatternUtils.getResourcePatternResolver does not accept null arg [SPR-14500] #19069
  • Mis-proxying of Mockito mock and poor diagnostics for type mismatch on proxy injection [SPR-14478] #19047
  • NPE while try to use abstract beans with optional properties [SPR-14474] #19043
  • Jackson 2.6.x -> 2.7 deserialize generic fails when calling Spring controller [SPR-14470] #19039
  • MessageHeaderAccessor doesn't remove headers if they are null [SPR-14468] #19037
  • Ineffective synchronization in StandardTypeConverter constructor [SPR-14465] #19034
  • CronSequenceGenerator causes StackOverflowError with reversed range values [SPR-14462] #19031
  • MultipartResolutionDelegate in Servlet 2.5 environments not working correctly [SPR-14461] #19030
  • Flush exception translation not working anymore with Hibernate 5.2 [SPR-14457] #19026
  • MethodBasedEvaluationContext.lazyLoadArguments() execution fails for empty variable arguments call [SPR-14453] #19022
  • Regression: TestContextManager no longer tracks after-class exception with log level lower than WARN [SPR-14447] #19017
  • NoOpCacheManager and @Cacheable(sync=true) [SPR-14445] #19015
  • SSE: Terminating chunk not sent using tomcat >= 8.0.35 [SPR-14444] #19014
  • HibernateTemplate not binary-compatible with Hibernate 5.0/5.1's Query type [SPR-14425] #18996
  • ConfigurationClassParser needs to load annotations through source class loader [SPR-10343] #14977

📔 Documentation

  • Documentation still favoring velocity but it is deprecated in 4.3 [SPR-14460] #19029

4.3.1 Release

17 Jan 14:22
Compare
Choose a tag to compare

⭐ New Features

  • @MessageExceptionHandler should match cause as well (analogous to @ExceptionHandler) [SPR-14424] #18995
  • Defensively access deprecated AbstractHttpClient class from Apache HttpComponents [SPR-14422] #18993
  • Convert comma-separated string into list of classes analogous to existing support for class array [SPR-14415] #18986
  • Add BasicAuthorizationInterceptor [SPR-14412] #18983
  • Enforce UTF-8 encoding in SseEmitter [SPR-14407] #18978
  • MvcUriComponentsBuilder should not include empty query parameters in build URI [SPR-14405] #18976
  • RequestMappingInfoHandlerMapping.handleNoMatch throws 415 when it should throw 406 [SPR-14397] #18969
  • Improve error handling when resolving message payloads [SPR-14394] #18967
  • Improve warn logging in AbstractHandlerExceptionResolver [SPR-14392] #18965
  • STOMP 1.1 protocol support for client [SPR-14391] #18964
  • Multiple load-time-weaver elements cause repeated addition of AspectJ transformer [SPR-14373] #18946
  • ForwardedHeaderFilter should support case insensitive header name [SPR-14372] #18945
  • Revise PropertySourcesPropertyResolver's default logging and customizability [SPR-14370] #18943
  • @WebAppConfiguration fails with ServletServerContainerFactoryBean in the ApplicationContext [SPR-14367] #18939
  • ReflectionTestUtils should defensively invoke toString() on target objects [SPR-14363] #18935
  • Provide API to expose Spring MVC's ability to match requests [SPR-14321] #18893
  • Add exposeProxy to @EnableAspectJAutoProxy [SPR-10454] #15087

🪲 Bug Fixes

  • Return type implementing DeferredResult is rejected with exception [SPR-14423] #18994
  • Cache infrastructure using AspectJ is not properly configured [SPR-14413] #18984
  • Possible issue with handling http method OPTIONS [SPR-14410] #18981
  • Regression: DefaultCorsProcessor ignores already present Access-Control-Allow-Origin header [SPR-14406] #18977
  • InjectionPoint not propagated by AutowiredAnnotationBeanPostProcessor's cached argument resolution [SPR-14400] #18971
  • JDBC Connection to reset not identical to originally prepared Connection with Hibernate 5.2 [SPR-14393] #18966
  • @JmsListener endpoint @Payload resolution fails due to interplay of new LazyResolutionMessage and MessagingMessageConverterAdapter [SPR-14389] #18962
  • Deadlock while creating a new thread on bean initialization with transactional code invocation [SPR-14388] #18961
  • HEAD/GET in MVC not fully backward-compatible [SPR-14383] #18956
  • Background initialization for Hibernate SessionFactory breaks transaction management [SPR-14379] #18952
  • Regression: Static JS files served as 'application/octet-stream' instead of 'application/javascript' [SPR-14368] #18940
  • NoSuchMethodError for SessionFactoryImplementor.getProperties() with Hibernate 5.1 [SPR-14365] #18937
  • Hibernate 5 SpringSessionSynchronization calls Session.getFlushMode() directly instead of using SessionFactoryUtils.getFlushMode(session) [SPR-14364] #18936
  • Failure to resolve @RequestMapping method arguments in Servlet 2.5 environments [SPR-14358] #18930
  • SockJs heartbeat during message send closes socket [SPR-14356] #18928

📔 Documentation

  • Cache documentation does not mention "sync" attribute. [SPR-14366] #18938
  • Migrate to Asciidoctor 1.5 syntax [SPR-14355] #18927
  • Small issues with Spring Framework Code Style Guide [SPR-14352] #18924
  • Ambiguous sentence in the cache documentation [SPR-14399] #18017