Release Notes - Spring Framework - Version 5.0.3 - HTML format

Bug

  • [SPR-15066] - Error in RestTemplate when setting the same HTTP header through ClientHttpRequestInterceptor and HttpEntity
  • [SPR-16051] - WebFlux controller successfully completes response if Flux emits error
  • [SPR-16166] - Support top-level scalar values in Jackson2Tokenizer
  • [SPR-16196] - Combining @Retryable and @Scheduled/@JmsListener doesn't work
  • [SPR-16210] - DispatcherHandler invoke wrong method when discriminating request with params
  • [SPR-16244] - Trying to rewrite request URI in a WebFilter fails on missing client TLS certificate
  • [SPR-16246] - Reactive WebClient corrupts uploaded files
  • [SPR-16247] - Content-type not set by default with the functional Web API
  • [SPR-16250] - null FactoryBean results in BeanCreationException
  • [SPR-16251] - Breaking change in MVC: Accept handling is now more strict
  • [SPR-16252] - Exception when receiving Long collection in MessageMapping
  • [SPR-16255] - NPE in FunctionReference due to race condition in SpelExpression.getValue()
  • [SPR-16262] - spring-web CORS requires X-Forwarded-Port
  • [SPR-16265] - Stomp Broker Relay may ignore configured destination prefixes
  • [SPR-16267] - Embedded cglib 3.2.5 not closing input streams that read class files
  • [SPR-16278] - BeanUtils.isSimpleValueType() returns false for enums overriding a method
  • [SPR-16281] - Unnecessary file system access in SimpleMetadataReaderFactory.getMetadataReader
  • [SPR-16288] - Ambiguous mapping error when using generic interface
  • [SPR-16289] - BeanCreationException when using c-namespace, Kotlin class with default constructor and annotation configuration
  • [SPR-16290] - AbstractReactiveWebInitializer does not property initialize ApplicationContext
  • [SPR-16295] - Programmatic creation of caching proxies using CacheProxyFactoryBean does not work
  • [SPR-16304] - Access-Control-Allow-Origin header returns wrong value using SockJS
  • [SPR-16311] - MockHttpServletResponse.setLocale(Locale) should set HttpHeaders.CONTENT_LANGUAGE header
  • [SPR-16316] - Large transaction timeout value (Integer.MAX_VALUE for example) results in transaction expiring immediately after starting.
  • [SPR-16334] - PropertySourcesPlaceholderConfigurer can not ignore resource if not found
  • [SPR-16338] - @JmsListener concurrency property is ignored if DefaultJmsListenerContainerFactory#concurrency is set
  • [SPR-16343] - DefaultLifecycleProcessor throws BeanNotOfRequiredType for null beans (cause of NullBean instance cannot be converted)
  • [SPR-16347] - AbstractAutoProxyCreator throws IllegalStateException when using Apache Orchestra conversations
  • [SPR-16350] - Multi-part upload of a byte[] with WebTestClient is Base64 encoded (?) and assigned a JSON content type
  • [SPR-16351] - Use of CompositeByteBuf in NettyDataBuffer results in IllegalReferenceCountException
  • [SPR-16353] - JMS Producers are cached even when the destination is a temporary queue causing a memory leak
  • [SPR-16365] - Using DataBuffer::write results in IndexOutOfBoundsException
  • [SPR-16369] - TestExecutionListener class not found logged at INFO
  • [SPR-16383] - EclipseLink does not log SQL parameters when using showSql
  • [SPR-16402] - MultipartHttpMessageWriter should not subscribe to Publisher multipart data
  • [SPR-16407] - Support array of scalar values in Jackson2Tokenizer

New Feature

  • [SPR-16307] - Support Publishers for multipart data in BodyInserters
  • [SPR-16366] - ServerResponse should allow the usage of unassigned HTTP status codes
  • [SPR-16376] - Support Custom Headers for Multipart Async Data

Task

  • [SPR-13574] - Compatibility with JCache 1.1
  • [SPR-15624] - Update Stomp Client Recommendation in Docs
  • [SPR-16040] - [docs] Complete WebFlux annotation programming model parts
  • [SPR-16214] - UnsupportedOperationException when closing WebSocketSession on Reactive stack
  • [SPR-16237] - Upgrade to Gradle 4.4(.1)
  • [SPR-16239] - Upgrade to Kotlin 1.2
  • [SPR-16260] - Document WebFlux rendering of String and Flux<String> with JSON
  • [SPR-16268] - Fix Kdoc regression to show only Kotlin API
  • [SPR-16300] - Typo in example code in spring reactive reference document
  • [SPR-16315] - Incorrect SpEL syntax in reference documentation
  • [SPR-16317] - Documentation about Spring Framework BOM missing for Spring Framework 5.0
  • [SPR-16352] - Replace iText 2.1.7 dependency with OpenPDF 1.0.5
  • [SPR-16360] - Improve WebFlux.fn Java configuration documentation
  • [SPR-16384] - Upgrade to JUnit Jupiter 5.0.3
  • [SPR-16385] - Upgrade to Reactor Core 3.1.3 (including Reactive Streams 1.0.2)
  • [SPR-16397] - [doc] Update documentation on WebAsyncManager thread pool

Improvement

  • [SPR-15772] - CORS combine - override specific host defined in global conf with * in controller/method
  • [SPR-16169] - UriTemplate.matches boolean has greedy behavior at the end of a pattern
  • [SPR-16231] - HttpWebHandlerAdapter should log helpful information when response is committed
  • [SPR-16235] - Remove synchronization from ResourceBundleMessageSource
  • [SPR-16241] - Creating a SimpleJdbcInsert from a NamedParameterJdbcTemplate
  • [SPR-16243] - Controller cannot be found if absolute URI is given in HTTP request
  • [SPR-16248] - Support load time weaving in Liberty without the agent
  • [SPR-16253] - Byte related decoders should implement decodeToMono
  • [SPR-16264] - Reduce access on user in SimpleBrokerMessageHandler.handleMessageInternal
  • [SPR-16266] - Javadocs for @RequestMapping not so useful in 5.0
  • [SPR-16273] - Clarify Kotlin reified type parameter extensions documentation about type erasure
  • [SPR-16275] - config.enableSimpleBroker("/topic", "/queue"); Should be config.enableSimpleBroker("/topic", "queue");
  • [SPR-16280] - Provide methods to add query string parameters to MockServerHttpRequest
  • [SPR-16284] - Allow to inject enum with package visibility
  • [SPR-16285] - Improve HeaderAssertions for specific tests
  • [SPR-16293] - Improve performance of some string operations
  • [SPR-16296] - ResourceUrlProvider.getForLookupPath fails if path contains double slashes
  • [SPR-16298] - Provide access to ApplicationContext via ServerWebExchange
  • [SPR-16319] - Limit thread synchronization in AbstractRequestExpectationManager
  • [SPR-16322] - CachedIntrospectionResults should use BeanInfoFactory when introspecting implemented interfaces
  • [SPR-16324] - Addition of overloading methods to addPathPatterns and excludePathPatterns in InterceptorRegistration class
  • [SPR-16328] - Make RestOperations extensions parameters nullability consistent with Java API
  • [SPR-16339] - JsonPathExpectationsHelper doesn't offer a way to distinguish between field not existing and an explicit null
  • [SPR-16348] - Set 304 status on ServerResponse when ETag/LastModified match
  • [SPR-16356] - ComponentScanBeanDefinitionParser::parseTypeFilters should not fail on ClassNotFoundException
  • [SPR-16361] - SqlParameterSource needs method for extracting parameter names
  • [SPR-16378] - Use ArrayList instead of LinkedList for known size
  • [SPR-16403] - DataBufferUtils.read should not take input stream/channel as parameter
  • [SPR-16404] - Removed unnecessary cast to "int" in SimpleStreamingClientHttpRequest

Refactoring

  • [SPR-16245] - AbstractRequestLoggingFilter | allow modification of payload used in createMessage
  • [SPR-16374] - CollectionUtils.lastElement for common Set/List extraction

Edit/Copy Release Notes

The text area below allows the project release notes to be edited and copied to another document.