⭐ New Features
- Introduce ResolvableType.toClass() shortcut [SPR-17086] #21623
- Programmatic ObjectProvider retrieval through BeanFactory API [SPR-17075] #21613
- Avoid repeated factory class introspection in AbstractAutowireCapableBeanFactory [SPR-17071] #21609
- Revise ResolvableType.as for introspection performance (limiting serializability) [SPR-17070] #21608
- Support running Kotlin Spring apps without kotlin-reflect.jar [SPR-17069] #21607
- Use available type information in functional bean definitions for resolving FactoryBean type [SPR-17063] #21601
- Support for null bean in functional bean registration [SPR-17057] #21595
- WebSession/WebSessionStore API are silent on saving a session that may have been invalidated [SPR-17051] #21589
- Hibernate 5: restore ability to inject "cacheRegionFactory" of LocalSessionFactoryBean [SPR-17043] #21581
- Support stricter encoding of URI variables in UriComponents [SPR-17039] #21577
- Consistent non-exposure of null beans in the BeanFactory API [SPR-17034] #21572
- Publicly expose ResolvableType in RootBeanDefinition [SPR-17028] #21566
- Evaluate
@Cacheable
(condition) once per method invocation only [SPR-17024] #21562 - Revise ClassUtils.isPresent for exposing resolution exceptions in jlinked modules [SPR-17018] #21556
- Add ServerResponse extensions for json, xml and html [SPR-17017] #21555
- HibernateJpaDialect cannot translate JDBCException to custom DataAccessException [SPR-17015] #21553
- Avoid ServerResponse static imports in WebFlux router DSL [SPR-17009] #21547
- RestTemplate (and probably server side as well) should be able to bootstrap itself if com.sun.org.apache.xalan.* is not available [SPR-17007] #21545
- DefaultParameterNameDiscoverer should automatically adapt to Graal constraints [SPR-17005] #21543
- LocalSessionFactoryBean and HibernateTransactionManager for JPA EntityManagerFactory setup [SPR-17002] #21540
- Perform explicit class checks in ReactiveAdapterRegistry [SPR-17000] #21538
- Create HttpHeaders.setBearerAuth(String) [SPR-16997] #21535
- Support platforms where Class is not Serializable in SerializableTypeWrapper [SPR-16992] #21530
- Add MockClientHttpRequest.getBodyAsString [SPR-16988] #21526
- AspectJ aspect for
@javax
.transaction.Transactional is not initialised by default [SPR-16987] #21525 - Throw a specific exception when an attempt to override a bean definition is rejected [SPR-16982] #21520
- Provide more control for setting the secure flag on the session cookie [SPR-16980] #21518
- Spring context indexer is not designed for the Java 9 module path [SPR-16979] #21517
- CachedIntrospectionResults should build complete descriptor for setter/getter across interface hierarchy [SPR-16978] #21516
- StandardServletMultipartResolver should support also HTTP PUT method [SPR-16975] #21513
- Resolved ApplicationListener event type should get cached [SPR-16970] #21508
- SpringClassRule does not support the Arquillian MethodRuleChain [SPR-16967] #21505
- Propagate read-only status to Hibernate Session through setDefaultReadOnly [SPR-16956] #21494
- Create DSL for RouterFunction and RouterFunctions [SPR-16953] #21491
- Improve logging for development (DEBUG vs TRACE) [SPR-16946] #21485
- LinkedCaseInsensitiveMap should explicitly implement putIfAbsent and computeIfAbsent [SPR-16926] #21465
- FilePart.transferTo should accept java.nio.file.Path [SPR-16925] #21464
- Provide getter to expose the DispatcherServlet instance used in MockMvc [SPR-16924] #21463
- Optimize AbstractAutowireCapableBeanFactory.populateBean(String, RootBeanDefinition, BeanWrapper) to avoid redundant Java Bean introspection [SPR-16918] #21457
- Create HttpHeaders.setBasicAuth(String username, String password) [SPR-16913] #21452
- Improve generic warnings when implementing BodyExtractor [SPR-16909] #21448
- Introduce Stream support in PropertySources and PropertyValues [SPR-16894] #21433
- Enable use of both
@SendTo
and@SendToUser
on the same method [SPR-16891] #21430 - MethodParameter needs to apply tighter assertions [SPR-16889] #21428
- Revisit PropertyResolver Kotlin extensions [SPR-16883] #21422
- Subclass-resolved generic return type declarations for handler methods [SPR-16877] #21416
- Support for form parameters with HTTP DELETE [SPR-16874] #21413
- WebClient.Builder option to customize every request [SPR-16873] #21412
- Process X-Forwarded-Ssl headers properly [SPR-16863] #21402
- Make FormHttpMessageWriter easier to extend [SPR-16855] #21395
- No type-based error code used by immutable form class when type conversion error occurs [SPR-16854] #21394
- Java 9: Avoid illegal reflective access warning for SpEL method reference [SPR-16845] #21385
- Validation failure not exposed next to binding failure for immutable form class [SPR-16841] #21381
@DateTimeFormat
annotations are necessary both on field and constructor parameter in the immutable form class [SPR-16840] #21380- A lite configuration class's member classes are processed when it's imported but not when it's registered directly [SPR-16839] #21379
- PathMatchingResourcePatternResolver should enforce OS-independent sorting of directory content [SPR-16838] #21378
- Extending ScheduledTaskRegistrar functionality [SPR-16834] #21374
- java.nio.file.Path support in FileSystemResource (with regular createRelative behavior, superseding PathResource) [SPR-16833] #21373
- ClassPathResource.isReadable() returns true for directory in runnable jar result in download empty file [SPR-16832] #21372
- Apply Hibernate Integrator through LocalSessionFactoryBean [SPR-16828] #21368
- Improve handling of unknown status codes by WebClient [SPR-16819] #21359
- Support use of MultipartFile as input to RestTemplate or WebClient [SPR-16808] #21348
- Improve UnsupportedMediaTypeException and UnsupportedMediaTypeStatusException to include body type [SPR-16805] #21345
- WebClient support application/x-www-form-urlencoded by default [SPR-16804] #21344
- Webflux: Default Resource as fallback for non-existing resources [SPR-16788] #21328
- MockServerWebExchange should allow setting a WebSession [SPR-16772] #21312
- Provide XML-based assertions in WebTestClient [SPR-16741] #21282
- WebTestClient does not provide Hamcrest Matcher assertions for JSONPath [SPR-16729] #21270
- Provide simple way to create ServerRequest [SPR-16706] #21247
- CookieLocaleResolver is not RFC6265 compliant when setting a locale and time zone [SPR-16700] #21241
- Document HttpClient connection socket timeout behavior for CONNECT and SSL connections [SPR-16697] #21238
- Closing a MockHttpServletResponse's PrintWriter does not commit the response [SPR-16683] #21224
- getRemoteAddress in ServerRequest [SPR-16681] #21222
@RequestMethod
with "params" doesn't distinguish whether a value is specified or not [SPR-16674] #21215- Support use of reactive clients in
@MessageMapping
methods [SPR-16634] #21175 @RequestPart
in WebFlux does not support List of parts [SPR-16621] #21162- Raise error if both
@EnableWebMvc
and@EnableWebFlux
used [SPR-16609] #21150 - MultipartHttpServletRequest.getParameterValues does not merge values from query string and body [SPR-16590] #21132
- Allow spring-jcl to be found by Commons Logging's service discovery [SPR-16585] #21127
- JdbcTemplate.queryForMap should return first value of equally named columns [SPR-16578] #21120
- Introduce consumeWith() methods in WebTestClient assertions [SPR-16574] #21116
- Make SubProtocolWebSocketHandler connection timeout configurable [SPR-16531] #21074
- HTTP OPTIONS response for
@RequestMapping
should contain OPTIONS consistently [SPR-16513] #21056 - MockHttpServletRequest.getReader, getInputStream should each return the same object on repeat calls [SPR-16505] #21048
- MockHttpServletRequest shouldn't allow calls to both getReader and getInputStream [SPR-16499] #21042
- Add SAP HANA to common JPA database platforms [SPR-16460] #21005
- CookieWebSessionIdResolver should leverage SameSite Cookie Attribute [SPR-16418] #20964
- Support varargs for expectations in MockMvc [SPR-16417] #20963
- Ability to access Environment in the beans element of the Kotlin bean definition DSL [SPR-16412] #20958
- Jackson: Add visibility properties to Jackson2ObjectMapperBuilder [SPR-16411] #20957
- Support for serving Brotli encoded, static resources [SPR-16381] #20927
- Ability to provide an external base path for controllers [SPR-16336] #20883
@RequestMapping
produces condition should not impact error responses [SPR-16318] #20865- Support Hibernate 5.3's ManagedBeanRegistry for dependency injection [SPR-16305] #20852
- Support for Hibernate ORM 5.3 [SPR-16303] #20850
- Kotlin bean definition DSL should provide access to getBeansOfType() [SPR-16269] #20816
- WebSocket in WebFlux stack doesn't support Session Attributes [SPR-16212] #20760
- Support for autowire-candidate with
@Bean
[SPR-16204] #20752 - WebSocketConfigurationSupport.defaultSockJsTaskScheduler adds NoOpScheduler to context that is not usable in any way [SPR-16189] #20737
- Provide an Apache Commons Logging's LogFactory provider in spring-jcl to support WebSphere's Parent-First classloader [SPR-15903] #20457
- MethodHandles.Lookup.defineClass for CGLIB class definition purposes [SPR-15859] #20414
- Support Protobuf serialization in WebFlux [SPR-15776] #20331
- improve performance of ContentCachingRequestWrapper [SPR-15762] #20317
- Pass input message to HttpMessageNotReadableException for better logging [SPR-15588] #20147
- Accept empty Collection injection for single constructor scenarios [SPR-15338] #19901
- Jetty HTTP client integration with WebClient [SPR-15092] #19658
- Specific exceptions for missing request headers, cookies, etc [SPR-14818] #19384
- Preserve order of broker messages [SPR-13989] #18562
- Support AND operator in
@Profile
annotation [SPR-12458] #17063 @PathVariable
&@MatrixVariable
do not work as documented when "=" is in the path variable value part (pre ";") [SPR-11897] #16516- ObjectProvider iterable/stream access for "beans of type" resolution in
@Bean
methods [SPR-11419] #16046 - Enable REST controller method parameter annotations on an interface [SPR-11055] #15682
- Add static factory methods to RequestCallback and ResponseExtractor [SPR-8604] #13247
🪲 Bug Fixes
- ClientResponse's body ignored on UnsupportedMediaTypeException [SPR-17054] #21592
- org.springframework.orm.hibernate5.SpringBeanContainer ignores the fallback bean instance producer [SPR-17010] #21548
- AbstractMessageConverterMethodProcessor doesn't respect already handled headers and result-codes [SPR-16921] #21460
- Spring Boot DevTools on 5.1 fails with java.lang.LinkageError: loader attempted duplicate class definition [SPR-16902] #21441
- RestTemplate adds duplicate accept header information [SPR-16690] #21231
📔 Documentation
- Create wiki page on debug/trace logging [SPR-16954] #21492