Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
4.3.16 Release
5.0.5 Release
⭐ New Features
- Add cpp to mime.types as text/plain [SPR-16678] #21219
- Mixed use BeanNameAutoProxyCreator and AnnotationAwareAspectJAutoProxyCreator to proxy same bean [SPR-16677] #21218
- Comprehensively cache annotated methods for interfaces and superclasses [SPR-16675] #21216
- Reduce ClassUtils.forName overhead (in particular for annotation introspection purposes) [SPR-16667] #21208
- Generate multipart boundary using SecureRandom [SPR-16635] #21176
- When
@DependsOn
throws a NoSuchBeanDefinitionException it should include the dependent bean for clarity [SPR-16628] #21169 - STOMP broker relay only allows up to 15 client connections [SPR-16626] #21167
- Update ContentNegotiationStrategy to never return an empty List [SPR-16624] #21165
- Allow to make FormHttpMessageConverter add the charset in the Content-Type header [SPR-16613] #21154
- ThreadPoolTaskExecutor should cancel all remaining Future handles on shutdown [SPR-16607] #21148
- CodecException: No suitable writer found for part [SPR-16601] #21142
- Consistent volatile access to running flag in Lifecycle implementations [SPR-16596] #21137
- Support for grouped DeferredImportSelector [SPR-16589] #21131
- Support for SimpleEvaluationContext in SpEL [SPR-16588] #21130
- MockMvcResultMatchers.jsonPath(String).value() should have a matching method to declare the expected type [SPR-16587] #21129
- Consider caching interface-derived BeanInfo instances in CachedIntrospectionResults [SPR-16568] #21110
- Support
@ResponseStatus-annotated
exceptions on WebFlux [SPR-16567] #21109 - Overloaded convenience setters on HttpHeaders [SPR-16562] #21104
- Consistent incrementer arrangement for PostgreSQL, DB2 and SAP HANA [SPR-16558] #21101
- Provide simple way to create ClientResponse [SPR-16553] #21096
- Improve docs and handling of send errors in ResponseBodyEmitter [SPR-16548] #21091
- EncoderHttpMessageWriter never sets Content-Length [SPR-16542] #21085
- Jackson Encoder(s) ignore charset in MimeType [SPR-16539] #21082
- Need ability to access URI template in WebClient metrics/tracing instrumentation [SPR-16537] #21080
- DefaultMessageListenerContainer should interrupt worker threads when not returning on shutdown [SPR-16536] #21079
- Support for ResolvableType.getType().getTypeName() on Java 8 [SPR-16535] #21078
- Consistent use of Collection.toArray with zero-sized array argument [SPR-16523] #21066
- Unable to register
@RestControllerAdvice
Class via WebTestClient [SPR-16520] #21063 - Headers adding ability in ACK/NACK frame [SPR-16519] #21062
- SSE writer does not allow customizing the charset [SPR-16516] #21059
- Customize PreparedStatementCreatorFactory in getPreparedStatementCreator [SPR-16050] #20599
- Support BufferingClientHttpRequestFactory in MockRestServiceServer [SPR-14694] #19258
- Add support for asserting JSON in ContentRequestMatchers, just as there is for XML [SPR-13919] #18493
- Spring Websockets Broker relay supporting a cluster of STOMP endpoint addresses [SPR-12452] #17057
🪲 Bug Fixes
- SimpleMailMessage's handling of to/cc/bcc arrays is inconsistent [SPR-16671] #21212
- JndiRmiServiceExporter fails to export service on IBM j9 JDK [SPR-16670] #21211
- Unable to bind a null value for UUID column with PostgreSQL [SPR-16669] #21210
- NamedParameterUtils.parseSqlStatement should parse :{x} style parameter correctly [SPR-16663] #21204
- UriComponentsBuilder Forwarded header parsing can throw java.lang.NumberFormatException [SPR-16660] #21201
- Cannot autowire individual constructor argument in
@Nested
test class [SPR-16653] #21194 - Annotation lookup on parameter in inner class constructor fails when using javac from JDK versions prior to 9 [SPR-16652] #21193
- ServletUriComponentsBuilder should replace context path when X-Forwarded-Prefix is present [SPR-16650] #21191
- Concurrent result may be missed due to a race condition in MockMvc [SPR-16648] #21189
- Multipart Upload with Commons Fileupload on lazy mode downloads data on cleanup [SPR-16640] #21181
- WebClient retrieve() does not handle Void.class as recommended [SPR-16636] #21177
- An error occurs if a blank character exists before and after the delimiter of the MIME type parameter. [SPR-16630] #21171
- Address race condition within spring that causes about-to-be-created-bean exceptions [SPR-16627] #21168
- FactoryBeanRegistrySupport atomicity issues [SPR-16625] #21166
- Consistent thread-safe iteration in DefaultSingletonBeanRegistry [SPR-16620] #21161
- CallMetaDataContext.reconcileParameters doesn't catch output parameters with DatabaseMetaData.procedureColumnResult type (on Postgres) [SPR-16611] #21152
- ResourceDecoder incorrectly matches to Object.class [SPR-16606] #21147
- AcceptHeaderLocaleResolver chooses wrong Locale for language match [SPR-16599] #21140
- WebFlux commitActions are called after status, headers and cookies are set [SPR-16597] #21138
- ServletHttpHandlerAdapter
@WebServlet
annotation attributes do not conform to servlet spec [SPR-16591] #21133 - Inconsistent handling of null values through Java 8 accessors in ConcurrentReferenceHashMap [SPR-16584] #21126
- RestTemplate with HttpComponentsClientHttpRequestFactory and no buffering with an interceptor throws UnsupportedOperationException [SPR-16582] #21124
- URIEditor should not double escape classpath: URIs [SPR-16581] #21123
- SimpleAliasRegistry registerAlias not atomic [SPR-16577] #21119
- TransactionTemplate inherits equals()/hashCode() from DefaultTransactionDefinition [SPR-16572] #21114
- WebAsyncManager concurrentResult should be volatile [SPR-16571] #21113
- Inconsistent synchronization in AbstractBeanFactoryBasedTargetSource and JdbcAccessor [SPR-16570] #21112
- Reading annotations in ConfigurationClassParser does not fall back to ASM on Google App Engine [SPR-16564] [#21106](https://github.com/spring-pro...
4.3.15 Release
⭐ New Features
- Spring Websockets Broker relay supporting a cluster of STOMP endpoint addresses [SPR-12452] #17057
- Quartz Scheduler - configurable SchedulerFactory [SPR-16439] #20985
- Avoid String concatenation for not-null assertion in BeanProperty/DirectFieldBindingResult [SPR-16455] #21000
- AcceptHeaderLocaleResolver should match country locales against supported language locales [SPR-16457] #21002
- Support for ResolvableType.getType().getTypeName() on Java 8 [SPR-16535] #21078
- Consistent incrementer arrangement for PostgreSQL, DB2 and SAP HANA [SPR-16558] #21101
- MockMvcResultMatchers.jsonPath(String).value() should have a matching method to declare the expected type [SPR-16587] #21129
- Support for SimpleEvaluationContext in SpEL [SPR-16588] #21130
- Consistent volatile access to running flag in Lifecycle implementations [SPR-16596] #21137
- When
@DependsOn
throws a NoSuchBeanDefinitionException it should include the dependent bean for clarity [SPR-16628] #21169 - Generate multipart boundary using SecureRandom [SPR-16635] #21176
- Reduce ClassUtils.forName overhead (in particular for annotation introspection purposes) [SPR-16667] #21208
- Add cpp to mime.types as text/plain [SPR-16678] #21219
🪲 Bug Fixes
- Precondition failed for PUT methods on ResponseEntity return types [SPR-15780] #20335
- SubProtocolWebSocketHandler should not log ERROR on "No messages received after ..." [SPR-16409] #20955
- ServletServerHttpRequest.getURI() may throw a java.net.URISyntaxException [SPR-16414] #20960
- AbstractClientSockJsSession.close call does not propagate IOException from disconnect [SPR-16415] #20961
- Spurious WARNINGs when XML declared TransactionProxyFactoryBean's target bean depends on an annotation declared bean that depends on another bean [SPR-16427] #20973
- Lambda error detection might not work on JDK 9 [SPR-16435] #20981
- CachingConnectionFactory - Invalid session in session cache [SPR-16450] #20995
- MockMvcRequestBuilder does not decode pathInfo [SPR-16453] #20998
- MimeType compareTo implementation is not compatible with equals [SPR-16458] #21003
- GSON converter only serialises fields of controller method return type, ignoring subclass fields of response object [SPR-16461] #21006
- SimpleJdbcCall can't access synonyms in Oracle database [SPR-16478] #21022
- Set thread interrupt flag on InterruptedException [SPR-16479] #21023
- JsonMappingException when trying to instantiate org.springframework.messaging.Message [SPR-16486] #21029
- Deadlock in SubProtocolWebSocketHandler on shutdown with Undertow [SPR-16488] #21031
- NPE in Spring-JDBC with Oracle and SimpleJdbcInsert [SPR-16495] #21038
- ExceptionHandlerExceptionResolver advice applicability check may fail against interface-based controller proxy [SPR-16496] #21039
- FormTag renders empty tag [SPR-16498] #21041
- ForwardedHeaderFilter garbles query params during sendRedirect() [SPR-16506] #21049
- StringIndexOutOfBoundsException when rewriting links in CSS resources [SPR-16526] #21069
- Spurious ERROR-level logging when using SSEEmitter [SPR-16528] #21071
- GsonHttpMessageConverter cannot be used in an SseEmitter because it closes the response stream [SPR-16529] #21072
- testBindInstantFromJavaUtilDate fails on systems in the Pacific/Auckland time zone [SPR-16534] #21077
- WebApplicationContextFacesELResolver#isReadOnly always return false [SPR-16543] #21086
- PostgresTableMetaDataProvider.isGetGeneratedKeysSimulated() does not detect Postgres 10 [SPR-16556] #21099
- Missing PersistenceException cause message in refresh failure warn log [SPR-16559] #21102
- Reading annotations in ConfigurationClassParser does not fall back to ASM on Google App Engine [SPR-16564] #21106
- Inconsistent synchronization in AbstractBeanFactoryBasedTargetSource and JdbcAccessor [SPR-16570] #21112
- WebAsyncManager concurrentResult should be volatile [SPR-16571] #21113
- TransactionTemplate inherits equals()/hashCode() from DefaultTransactionDefinition [SPR-16572] #21114
- SimpleAliasRegistry registerAlias not atomic [SPR-16577] #21119
- URIEditor should not double escape classpath: URIs [SPR-16581] #21123
- RestTemplate with HttpComponentsClientHttpRequestFactory and no buffering with an interceptor throws UnsupportedOperationException [SPR-16582] #21124
- Inconsistent handling of null values through Java 8 accessors in ConcurrentReferenceHashMap [SPR-16584] #21126
- AcceptHeaderLocaleResolver chooses wrong Locale for language match [SPR-16599] #21140
- CallMetaDataContext.reconcileParameters doesn't catch output parameters with DatabaseMetaData.procedureColumnResult type (on Postgres) [SPR-16611] #21152
- Consistent thread-safe iteration in DefaultSingletonBeanRegistry [SPR-16620] #21161
- FactoryBeanRegistrySupport atomicity issues [SPR-16625] #21166
- Address race condition within spring that causes about-to-be-created-bean exceptions [SPR-16627] #21168
- An error occurs if a blank character exists before and after the delimiter of the MIME type parameter. [SPR-16630] #21171
- Multipart Upload with Commons Fileupload on lazy mode downloads data on cleanup [SPR-16640] #21181
- Concurrent result may be missed due to a race condition in MockMvc [SPR-16648] #21189
- ServletUriComponentsBuilder should replace context path when X-Forwarded-Prefix is present [SPR-16650] #21191
- Annotation lookup on parameter in inner class constructor fails when using javac from JDK versions prior to 9 [SPR-16652] #21193
- UriComponentsBuilder Forwarded header parsing can throw java.lang.NumberFormatException [SPR-16660] #21201
- NamedParameterUtils.parseSqlStatement should parse :{x} style parameter correctly [SPR-16663] #21204
- Unable to bind a null value for UUID column with PostgreSQL [SPR-16669] #21210
- SimpleMailMessage's handling of to/cc/bcc arrays is inconsistent [SPR-16671] #21212
- DefaultResponseErrorHandler wastes the body of a resp...
5.0.4 Release
⭐ New Features
- Avoid multiple warnings related to jackson-module-kotlin in Jackson2ObjectMapperBuilder [SPR-16497] #21040
- WebClient | onErrorResume logs exception although it has been handled [SPR-16484] #21027
- Supports ConversionService on SingleColumnRowMapper [SPR-16483] #21026
- AcceptHeaderLocaleResolver should match country locales against supported language locales [SPR-16457] #21002
- Avoid String concatenation for not-null assertion in BeanProperty/DirectFieldBindingResult [SPR-16455] #21000
- Quartz Scheduler - configurable SchedulerFactory [SPR-16439] #20985
- Missing java.time.Year Formatter [SPR-16437] #20983
- ViewResolverRegistry in WebFlux is missing a scriptTemplate option [SPR-16431] #20977
- MockMvc error handling with CompletableFuture regression in 5.0.1+ [SPR-16430] #20976
DelegatingServletInputStream#available
always returns 0 [SPR-16416] #20962- Add Vary: Access-Control-Request-Method/Headers CORS headers [SPR-16413] #20959
- The FieldError class does not provide access to the exception that triggered the binding error. [SPR-16372] #20919
- StringToLocaleConverter should allow BCP 47 values [SPR-16188] #20736
- Support Smile streaming in WebFlux [SPR-16151] #20699
- ScheduledAnnotationBeanPostProcessor does not support Duration syntax [SPR-15455] #20016
- Improve WebFlux exception logging [SPR-15083] #19649
🪲 Bug Fixes
- Performance degradation for creating non-singleton bean [SPR-16514] #21057
- NPE in AnnotationAwareOrderComparator.getPriority [SPR-16508] #21051
- With two-way-ssl exchange.getRequest().getSslInfo() always null [SPR-16507] #21050
- ForwardedHeaderFilter garbles query params during sendRedirect() [SPR-16506] #21049
- Invalid/missing locale strings in header prevents resolving the locale [SPR-16500] #21043
- FormTag renders empty tag [SPR-16498] #21041
- ExceptionHandlerExceptionResolver advice applicability check may fail against interface-based controller proxy [SPR-16496] #21039
- NPE in Spring-JDBC with Oracle and SimpleJdbcInsert [SPR-16495] #21038
- JsonMappingException when trying to instantiate org.springframework.messaging.Message [SPR-16486] #21029
- Set thread interrupt flag on InterruptedException [SPR-16479] #21023
- SimpleJdbcCall can't access synonyms in Oracle database [SPR-16478] #21022
- NamedParameterUtils.isParameterSeparator throws ArrayIndexOutOfBoundsException for non ASCII characters [SPR-16472] #21017
- GSON converter only serialises fields of controller method return type, ignoring subclass fields of response object [SPR-16461] #21006
- MimeType compareTo implementation is not compatible with equals [SPR-16458] #21003
- Resolvable type cannot resolve generic between different collection types [SPR-16456] #21001
- MockHttpServletRequest.addHeader fails for invalid LanguageRange in Accept-Language [SPR-16454] #20999
- MockMvcRequestBuilder does not decode pathInfo [SPR-16453] #20998
- CachingConnectionFactory - Invalid session in session cache [SPR-16450] #20995
- Cannot create BindStatus for valid field on immutable form object in case of bind errors [SPR-16449] #20994
- Lambda error detection might not work on JDK 9 [SPR-16435] #20981
- ServerHttpRequest.mutate does not preserve encoded chars if path modified [SPR-16434] #20980
- Spurious WARNINGs when XML declared TransactionProxyFactoryBean's target bean depends on an annotation declared bean that depends on another bean [SPR-16427] #20973
- AbstractClientSockJsSession.close call does not propagate IOException from disconnect [SPR-16415] #20961
- ServletServerHttpRequest.getURI() may throw a java.net.URISyntaxException [SPR-16414] #20960
- SubProtocolWebSocketHandler should not log ERROR on "No messages received after ..." [SPR-16409] #20955
- StringDecoder shouldn't chop off strings randomly [SPR-16337] #20884
📔 Documentation
5.0.3 Release
⭐ New Features
- Removed unnecessary cast to "int" in SimpleStreamingClientHttpRequest [SPR-16404] #20950
- DataBufferUtils.read should not take input stream/channel as parameter [SPR-16403] #20949
- Use ArrayList instead of LinkedList for known size [SPR-16378] #20924
- Support Custom Headers for Multipart Async Data [SPR-16376] #20922
- ServerResponse should allow the usage of unassigned HTTP status codes [SPR-16366] #20913
- SqlParameterSource needs method for extracting parameter names [SPR-16361] #20908
- ComponentScanBeanDefinitionParser::parseTypeFilters should not fail on ClassNotFoundException [SPR-16356] #20903
- Set 304 status on ServerResponse when ETag/LastModified match [SPR-16348] #20895
- JsonPathExpectationsHelper doesn't offer a way to distinguish between field not existing and an explicit null [SPR-16339] #20886
- Make RestOperations extensions parameters nullability consistent with Java API [SPR-16328] #20875
- Addition of overloading methods to addPathPatterns and excludePathPatterns in InterceptorRegistration class [SPR-16324] #20871
- CachedIntrospectionResults should use BeanInfoFactory when introspecting implemented interfaces [SPR-16322] #20869
- Limit thread synchronization in AbstractRequestExpectationManager [SPR-16319] #20866
- Support Publishers for multipart data in BodyInserters [SPR-16307] #20854
- Provide access to ApplicationContext via ServerWebExchange [SPR-16298] #20845
- ResourceUrlProvider.getForLookupPath fails if path contains double slashes [SPR-16296] #20843
- Improve performance of some string operations [SPR-16293] #20840
- Improve HeaderAssertions for specific tests [SPR-16285] #20832
- Allow to inject enum with package visibility [SPR-16284] #20831
- Provide methods to add query string parameters to MockServerHttpRequest [SPR-16280] #20827
- config.enableSimpleBroker("/topic", "/queue"); Should be config.enableSimpleBroker("/topic", "queue"); [SPR-16275] #20822
- Clarify Kotlin reified type parameter extensions documentation about type erasure [SPR-16273] #20820
- Javadocs for
@RequestMapping
not so useful in 5.0 [SPR-16266] #20813 - Reduce access on user in SimpleBrokerMessageHandler.handleMessageInternal [SPR-16264] #20811
- Byte related decoders should implement decodeToMono [SPR-16253] #20800
- Support load time weaving in Liberty without the agent [SPR-16248] #20795
- Controller cannot be found if absolute URI is given in HTTP request [SPR-16243] #20790
- Creating a SimpleJdbcInsert from a NamedParameterJdbcTemplate [SPR-16241] #20788
- Remove synchronization from ResourceBundleMessageSource [SPR-16235] #20782
- HttpWebHandlerAdapter should log helpful information when response is committed [SPR-16231] #20778
- UriTemplate.matches boolean has greedy behavior at the end of a pattern [SPR-16169] #20717
- CORS combine - override specific host defined in global conf with * in controller/method [SPR-15772] #20327
🪲 Bug Fixes
- Support array of scalar values in Jackson2Tokenizer [SPR-16407] #20953
- MultipartHttpMessageWriter should not subscribe to Publisher multipart data [SPR-16402] #20948
- EclipseLink does not log SQL parameters when using showSql [SPR-16383] #20929
- TestExecutionListener class not found logged at INFO [SPR-16369] #20916
- Using DataBuffer::write results in IndexOutOfBoundsException [SPR-16365] #20912
- JMS Producers are cached even when the destination is a temporary queue causing a memory leak [SPR-16353] #20900
- Use of CompositeByteBuf in NettyDataBuffer results in IllegalReferenceCountException [SPR-16351] #20898
- Multi-part upload of a byte[] with WebTestClient is Base64 encoded (?) and assigned a JSON content type [SPR-16350] #20897
- AbstractAutoProxyCreator throws IllegalStateException when using Apache Orchestra conversations [SPR-16347] #20894
- DefaultLifecycleProcessor throws BeanNotOfRequiredType for null beans (cause of NullBean instance cannot be converted) [SPR-16343] #20890
@JmsListener
concurrency property is ignored if DefaultJmsListenerContainerFactory#concurrency is set [SPR-16338] #20885- PropertySourcesPlaceholderConfigurer can not ignore resource if not found [SPR-16334] #20881
- Large transaction timeout value (Integer.MAX_VALUE for example) results in transaction expiring immediately after starting. [SPR-16316] #20863
- MockHttpServletResponse.setLocale(Locale) should set HttpHeaders.CONTENT_LANGUAGE header [SPR-16311] #20858
- Access-Control-Allow-Origin header returns wrong value using SockJS [SPR-16304] #20851
- Programmatic creation of caching proxies using CacheProxyFactoryBean does not work [SPR-16295] #20842
- AbstractReactiveWebInitializer does not property initialize ApplicationContext [SPR-16290] #20837
- BeanCreationException when using c-namespace, Kotlin class with default constructor and annotation configuration [SPR-16289] #20836
- Ambiguous mapping error when using generic interface [SPR-16288] #20835
- Unnecessary file system access in SimpleMetadataReaderFactory.getMetadataReader [SPR-16281] #20828
- BeanUtils.isSimpleValueType() returns false for enums overriding a method [SPR-16278] #20825
- Embedded cglib 3.2.5 not closing input streams that read class files [SPR-16267] #20814
- Stomp Broker Relay may ignore configured destination prefixes [SPR-16265] #20812
- spring-web CORS requires X-Forwarded-Port [SPR-16262] #20809
- NPE in FunctionReference due to race condition in SpelExpression.getValue() [SPR-16255] #20802
- Exception when receiving Long collection in MessageMapping [SPR-16252] #20799
- Breaking change in MVC: Accept handling is now more strict [SPR-16251] #20798
- null FactoryBean results in BeanCreationException [SPR-16250] #20797
- Content-type not set by default with the functional Web API [SPR-16247] #20794
- Reactive WebClient corrupts uploaded files [SPR-16246] [#20793](https...
4.3.14 Release
⭐ New Features
- Reduce access on user in SimpleBrokerMessageHandler.handleMessageInternal [SPR-16264] #20811
- config.enableSimpleBroker("/topic", "/queue"); Should be config.enableSimpleBroker("/topic", "queue"); [SPR-16275] #20822
- Allow to inject enum with package visibility [SPR-16284] #20831
- Improve performance of some string operations [SPR-16293] #20840
- ComponentScanBeanDefinitionParser::parseTypeFilters should not fail on ClassNotFoundException [SPR-16356] #20903
- Use ArrayList instead of LinkedList for known size [SPR-16378] #20924
🪲 Bug Fixes
- Error in RestTemplate when setting the same HTTP header through ClientHttpRequestInterceptor and HttpEntity [SPR-15066] #19632
- Combining
@Retryable
and@Scheduled
/@JmsListener
doesn't work [SPR-16196] #20744 - Exception when receiving Long collection in MessageMapping [SPR-16252] #20799
- NPE in FunctionReference due to race condition in SpelExpression.getValue() [SPR-16255] #20802
- spring-web CORS requires X-Forwarded-Port [SPR-16262] #20809
- Stomp Broker Relay may ignore configured destination prefixes [SPR-16265] #20812
- Embedded cglib 3.2.5 not closing input streams that read class files [SPR-16267] #20814
- BeanUtils.isSimpleValueType() returns false for enums overriding a method [SPR-16278] #20825
- Unnecessary file system access in SimpleMetadataReaderFactory.getMetadataReader [SPR-16281] #20828
- Ambiguous mapping error when using generic interface [SPR-16288] #20835
- Programmatic creation of caching proxies using CacheProxyFactoryBean does not work [SPR-16295] #20842
- Access-Control-Allow-Origin header returns wrong value using SockJS [SPR-16304] #20851
- Large transaction timeout value (Integer.MAX_VALUE for example) results in transaction expiring immediately after starting. [SPR-16316] #20863
@JmsListener
concurrency property is ignored if DefaultJmsListenerContainerFactory#concurrency is set [SPR-16338] #20885- JMS Producers are cached even when the destination is a temporary queue causing a memory leak [SPR-16353] #20900
- TestExecutionListener class not found logged at INFO [SPR-16369] #20916
- EclipseLink does not log SQL parameters when using showSql [SPR-16383] #20929
- RestTemplate.ResponseEntityResponseExtractor doesn't tolerate unknown status codes [SPR-16371] #20918
- MockClientHttpResponse should not return null body [SPR-16367] #20914
- Null path after UriComponents.normalize() results in NullPointerException [SPR-16364] #20911
📔 Documentation
- Incorrect SpEL syntax in reference documentation [SPR-16315] #20862
5.0.2 Release
⭐ New Features
- Add missing RestOperations extensions [SPR-16229] #20777
- Set Vary: Origin on CORS unauthorized response [SPR-16224] #20772
- SqlParameterSourceUtils.createBatch with Collection support [SPR-16215] #20763
- spring-jdbc : Improve memory allocations when substituting named parameters. [SPR-16170] #20718
- WebTestClient supports custom TLS certificate verification [SPR-16168] #20716
- Reduce access on headers for STOMP messaging [SPR-16165] #20713
- Make JpaVendorAdapters JTA-aware (in particular for Hibernate 5.1/5.2) [SPR-16162] #20710
- Support prefix-based Servlet path mapping in ServletHttpHandlerAdapter [SPR-16155] #20703
- Improve ReactorNettyTcpClient shutdown logic [SPR-16145] #20693
- ResourceLoader with local "file:foo/bar/file.file" reference does not return WritableResource [SPR-16140] #20688
- Add StatusAssertions.isForbidden [SPR-16129] #20677
- Allow to set cookies via WebFlux functional handlers [SPR-16121] #20669
- PathContainer-based implementation of extractPathWithinPattern [SPR-16120] #20668
- Sending form and multipart data with WebTestClient [SPR-16118] #20666
- Spring context indexer does not work with nested classes [SPR-16112] #20660
- STOMP SEND should not map to
@SubscribeMapping
methods [SPR-16109] #20657 - Provide read access to the scheduled tasks at runtime [SPR-15982] #20532
- WebFlux Should Communicate X509 Authentication [SPR-15964] #20516
🪲 Bug Fixes
- commons-logging LogFactory and String arguments [SPR-16226] #20774
- Nullability inconsistency in DataAccessUtils requiredSingleResult vs requiredUniqueResult [SPR-16225] #20773
- InMemoryWebSession.changeSessionId reports error if the session does not exist [SPR-16201] #20749
- Wrong byte code for compiled SpEL when JDK proxy method invocation is used [SPR-16191] #20739
- NPE in ErrorsMethodArgumentResolver [SPR-16187] #20735
- spring webflux: stack overflow when response data is greater then 16MB [SPR-16180] #20728
- NullPointer in DefaultRequestBodyUriSpec.cookies method [SPR-16178] #20726
- NumberFormatException caused by property paths from JSR-303 based validation with no index into a collection [SPR-16177] #20725
- AbstractMessageConverterMethodProcessor ignores HttpEntityMethodProcessor's Content-Type header [SPR-16172] #20720
- Printing of session with null attributes results in NullPointerException [SPR-16164] #20712
- CastClass exception (NullBean instead of 'null' value) when getting map of beans directly from ApplicationContext [SPR-16163] #20711
- bean(nameOfBean) doesn't work with Spring Framework 5.0.1 on AspectJ 1.8.12 [SPR-16161] #20709
- MockHttpServletResponse.getDateHeader fails with NPE for non-existing header [SPR-16160] #20708
@RequestAttribute
Mono<?> is not allowed for attributes that are of type Mono [SPR-16158] #20706- When using NamedParameterJdbcTemplate, NVARCHAR or NCLOB(4000 characters or less) columns are not properly populated since StatementCreatorUtils does setString for these types instead of setNString. [SPR-16154] #20702
- Wildcard JPA packages are not scanned [SPR-16152] #20700
- Early ApplicationContext close call may lead to ApplicationEventMulticaster/LifecycleProcessor access exception [SPR-16149] #20697
- ClassPathResource.createRelative is using wrong ClassPathResource constructor for the returned resource [SPR-16146] #20694
- AbstractDispatcherHandlerInitializer does not detect WebFilter beans [SPR-16144] #20692
- MockHttpServletRequest with Host: set builds wrong getRequestURL() [SPR-16138] #20686
- InterceptingHttpAccessor.setInterceptors should support immutable lists [SPR-16137] #20685
- AbstractRequestExpectationManager fails with "Expectations already declared" when ResponseCreator.createResponse throws an exception [SPR-16132] #20680
- Multipart form data can no longer be sent with syncBody in WebTestClient [SPR-16131] #20679
- Disable CORS credentials by default [SPR-16130] #20678
- AbstractMessageSource does not support null as default message anymore [SPR-16127] #20675
- Cookies are not available from an ExchangeResult [SPR-16124] #20672
- SpEL method invocation with varargs on proxy [SPR-16122] #20670
- KotlinReflectionParameterNameDiscoverer does not handle instance-extension methods properly [SPR-16119] #20667
- PathMatchingResourcePatternResolver returns duplicate resources when using classpath* prefix [SPR-16117] #20665
- BasicAuth interceptor does not accept empty username [SPR-16116] #20664
- Fix Reactive JsonView + HttpEntity handling [SPR-16098] #20647
- Avoid implicit autowiring with Kotlin secondary constructors [SPR-16022] #20571
📔 Documentation
4.3.13 Release
⭐ New Features
- Prevent WebSocket buffer overflow through application-level flow control [SPR-16089] #20638
- SchedulingConfigurer and JmsListenerConfigurer should respect
@Order
[SPR-16090] #20639 - Avoid temporary String creation in StringUtils.starts/endsWithIgnoreCase [SPR-16095] #20644
- Make JpaVendorAdapters JTA-aware (in particular for Hibernate 5.1/5.2) [SPR-16162] #20710
- Reduce access on headers for STOMP messaging [SPR-16165] #20713
- spring-jdbc : Improve memory allocations when substituting named parameters. [SPR-16170] #20718
🪲 Bug Fixes
- Checkbox/RadioButton incorrectly converts collections of enums with a custom converter [SPR-16082] #20631
@ModelAttribute
binding defined globally for particular attribute rather than per method invocation [SPR-16083] #20632- WebSphereUowTransactionManager swallows original exception when commit fails for another reason [SPR-16102] #20650
- Incorrectly identify bridged method on interface [SPR-16103] #20651
- PathMatchingResourcePatternResolver returns duplicate resources when using classpath* prefix [SPR-16117] #20665
- SpEL method invocation with varargs on proxy [SPR-16122] #20670
- AbstractRequestExpectationManager fails with "Expectations already declared" when ResponseCreator.createResponse throws an exception [SPR-16132] #20680
- MockHttpServletRequest with Host: set builds wrong getRequestURL() [SPR-16138] #20686
- ClassPathResource.createRelative is using wrong ClassPathResource constructor for the returned resource [SPR-16146] #20694
- Early ApplicationContext close call may lead to ApplicationEventMulticaster/LifecycleProcessor access exception [SPR-16149] #20697
- When using NamedParameterJdbcTemplate, NVARCHAR or NCLOB(4000 characters or less) columns are not properly populated since StatementCreatorUtils does setString for these types instead of setNString. [SPR-16154] #20702
- MockHttpServletResponse.getDateHeader fails with NPE for non-existing header [SPR-16160] #20708
- NumberFormatException caused by property paths from JSR-303 based validation with no index into a collection [SPR-16177] #20725
- Wrong byte code for compiled SpEL when JDK proxy method invocation is used [SPR-16191] #20739
- DefaultResponseErrorHandler.hasError doesn't tolerate unknown status codes [SPR-16108] #20656
- setArguments(null) on MethodInvoker no longer coerces null to Object[0] [SPR-16075] #20624
- RequestMapping method returning Future with null result causes NullPointerException [SPR-16072] #20621
- WebAsyncManager concurrency issue with SseEmitter when client disconnect [SPR-16058] #20607
📔 Documentation
5.0.1 Release
⭐ New Features
- Avoid temporary String creation in StringUtils.starts/endsWithIgnoreCase [SPR-16095] #20644
- Consider to add ability to modify the URI on ClientRequest.Builder [SPR-16093] #20642
- SchedulingConfigurer and JmsListenerConfigurer should respect
@Order
[SPR-16090] #20639 - Prevent WebSocket buffer overflow through application-level flow control [SPR-16089] #20638
- No way to signal that controller has handled the request in Webflux [SPR-16087] #20636
- Webflux handler method does not accept Map as parameter [SPR-16086] #20635
- Consider adding MockServerWebExchange.from(MockServerHttpRequest.BaseBuilder<?>) [SPR-16079] #20628
- MockMvc async does not re-use response instance on async dispatch [SPR-16067] #20616
- Annotations like
@Service
should add@AliasFor
for@Component
[SPR-16066] #20615 - Add convenient method to construct ParameterizedTypeReference from Type [SPR-16054] #20603
- Support JDK9 Flow.Publisher as an adaptable reactive type [SPR-16052] #20601
- Lower log level of ResponseStatusExceptionHandler [SPR-16049] #20598
- resourceHandlerMapping should be registered with shared HandlerInterceptor [SPR-16034] #20583
- ResourceWebHandler should throw ResponseStatusException when resources are not found [SPR-16023] #20572
- Controller fails to map for URLs patterns containing semicolons [SPR-16005] #20554
🪲 Bug Fixes
- Incorrectly identify bridged method on interface [SPR-16103] #20651
- WebSphereUowTransactionManager swallows original exception when commit fails for another reason [SPR-16102] #20650
- ContentDisposition class cannot parse quoted filename with ; [SPR-16091] #20640
@ModelAttribute
binding defined globally for particular attribute rather than per method invocation [SPR-16083] #20632- Checkbox/RadioButton incorrectly converts collections of enums with a custom converter [SPR-16082] #20631
- Returning non-standard HTTP status code causes exceptions on WebFlux [SPR-16073] #20622
- DataBufferUtils.read(ReadableByteChannel,...) may corrupt data when used with NettyDataBuffers [SPR-16070] #20619
- Empty NettyByteBuffer.asByteBuffer() returns ByteBuffer with zero capacity [SPR-16068] #20617
- BeanDefinitionValidationException when beans are null (NullBean) and initMethod is set [SPR-16063] #20612
- WebClient.mutate() impacts future .mutate() invocations [SPR-16059] #20608
- WebClient failed to write application/x-www-form-urlencoded [SPR-16055] #20604
- AbstractMessageSource does not properly interact with DelegatingMessageSource parent [SPR-16047] #20596
- sort BeanDefinitionRegistryPostProcessors added by other BeanDefinitionRegistryPostProcessors [SPR-16043] #20592
- CastClass exception when wiring Map of beans (NullBean instead of 'null' in the map) [SPR-16033] #20582
- Spring EL does not allow '\0' characters [SPR-16032] #20581
- CookieWebSessionIdResolver should set path to the context path + "/" [SPR-16030] #20579
- WebClient throws ClassCastException for bodyToMono(ParameterizedTypeReference) [SPR-16025] #20574
📔 Documentation
- Clarify Bean destroyMethod documentation [SPR-16078] #20627
- Improve documentation of lite configuration mode [SPR-16076] #20625
- Top-level "Language Support" reference section [SPR-16044] #20593
- Broken links to documentation section "Message Converters" [SPR-16024] #20573
- Docs for WebTestClient are pretty thin [SPR-16009] #20558
- Document HTTP/2 support in Spring 5 [SPR-15821] #20376
- Document Spring recommendations/restrictions for Java 9 module setups [SPR-14579] #19148
4.3.12 Release
⭐ New Features
- Add convenient method to construct ParameterizedTypeReference from Type [SPR-16054] #20603
- Backport s/s/m/j/o/s/m/w/MockPart.java from 5.x to 4.3.x [SPR-15854] #20409
🪲 Bug Fixes
- Request params Optional<List and List are inconsistent [SPR-15676] #20235
- java.util.Optional MultipartFile[]
@RequestParam
argument is null in multipart/form-data POST [SPR-15918] #20472 - only one MultipartFile object populated when using an java.util.Optional MutipartFile array or list
@RequestParam
[SPR-15919] #20473 - HttpEntityMethodProcessor discards headers [SPR-15952] #20504
- TaskExecutorRegistration.getTaskExecutor() overrides executor properties of a provided ThreadPoolTaskExecutor [SPR-15962] #20514
- JmsMessagingTemplate is not correctly configured [SPR-15965] #20517
- ChannelRegistration.setInterceptors is misnamed [SPR-15976] #20527
- RestTemplate doesn't consistently tolerate unknown HTTP status codes [SPR-15978] #20529
- PathMatchingResourcePatternResolver provides duplicate resources when using classpath* prefix combined with ant-style [SPR-15989] #20539
- Spring EL does not allow '\0' characters [SPR-16032] #20581
- sort BeanDefinitionRegistryPostProcessors added by other BeanDefinitionRegistryPostProcessors [SPR-16043] #20592
- SpelExpression throws NullPointerException instead of EvaluationException for primitives [SPR-16123] #20671