⭐ New Features
- CookieLocaleResolver may disturb error rendering when locale cookie has a malformed value [SPR-15182] #19748
- Tolerate null return from getNegotiatedExtensions (for Jetty 9.4.1 compatibility) [SPR-15180] #19746
- DispatcherServet.checkMultipart() does not consider javax.servlet.error.exception that has a MultipartException cause [SPR-15178] #19744
- Scheduled/JmsListenerAnnotationBeanPostProcessor free heap space [SPR-15175] #19741
- MockRestServiceServer should allow for an expectation to never occur. [SPR-15168] #19734
- MockSessionCookieConfig#maxAge defaults to 0 instead of -1 [SPR-15142] #19708
- org.springframework.messaging.handler.invocation.InvocableHandlerMethod should not mention "controller" [SPR-15139] #19705
- MockHttpServletRequestBuilder should support multiple locales [SPR-15116] #19683
- Add MimeType and MediaType constants for RSS [SPR-15109] #19676
- Update MySQLMaxValueIncrementer to not rely on MYISAM [SPR-15107] #19674
- Netty4ClientHttpRequestFactory should use SNI for TLS connections [SPR-15101] #19668
- Unable to specify factory bean in BeanDefinitionBuilder [SPR-15098] #19665
- Clarify WebContentInterceptor path mappings and efficiently match them [SPR-15096] #19663
- Improve performance of StringUtils.capitalize() [SPR-15094] #19661
- Implement MessagingException.toString() [SPR-15091] #19657
- GenericTableMetaDataProvider could use non standard named TableMeta-Schema if only one found [SPR-15090] #19656
- Remove String#toCharArray from ScriptUtils [SPR-15075] #19641
- Track bean dependencies for calls between
@Bean
methods within@Configuration
classes [SPR-15069] #19635 - xml websockets configuration does not mirror annotation configuration [SPR-15068] #19634
- SchedulingConfigurer's ScheduledTaskRegistrar should reliably shut down before TaskScheduler [SPR-15067] #19633
- Backport streamlined ClassPathBeanDefinitionScanner setup [SPR-15061] #19627
- Remove unused Log object from MessageHeaderAccessor [SPR-15045] #19611
- Backward compatibility: initDefaultStrategies() is no longer invoked on subclasses of "MessageListenerAdapter" [SPR-15043] #19609
@Aspect
pointcut declarations do not support dynamically loaded classes [SPR-15040] #19606- Reactor2StompTcpClient should use a shared EventLoopGroup [SPR-15035] #19601
- Consistent autowiring behavior for specifically typed injection points against loosely typed
@Bean
methods [SPR-14960] #19527 - ContentCachingRequestWrapper can have maxContentLength to limit caching [SPR-14829] #19395
- ScheduledAnnotationBeanPostProcessor should reliably apply after AnnotationAwareAspectJAutoProxyCreator [SPR-14692] #19256
- Classes with abstract
@Lookup
methods not registered in case of classpath scanning [SPR-14550] #19118 - Deterministic and JVM-independent
@Bean
registration order within Class-reflected configuration classes [SPR-14505] #19074 - Allow configuring the message converter in HttpPutFormContentFilter [SPR-14503] #19072
- getBeanNamesForType(ResolvableType) does not reliably work for beans with AOP proxies [SPR-14097] #18669
🪲 Bug Fixes
- InvocableHandlerMethod should call GenericTypeResolver with getBeanType() and only once [SPR-15186] #19752
- HiddenHttpMethodFilter may disturb error rendering when handling malformed multipart request [SPR-15179] #19745
- Collection autowiring does not resolve field-level type variable against containing class [SPR-15160] #19726
- HeaderMethodArgumentResolver doesn't resolve Optional.empty() for non-existing header [SPR-15151] #19717
- SimpleApplicationEventMulticaster should not rely on ClassCastException having a message [SPR-15145] #19711
- Modification in AbstractAutowireCapableBeanFactory to prevent stackoverflow errors causes context not to load. [SPR-15125] #19692
- Incorrect resolution of ResolvableAttributes when MessageSourceSupport#alwaysUseMessageFormat is true [SPR-15123] #19690
- Can't autowire BiMap: container resolves non-matching Map of value beans [SPR-15117] #19684
- DefaultRedirectStrategy.sendRedirect with relative URL and ForwardedHeaderFilter add contextpath to URL twice [SPR-15088] #19654
- Spring validation crashes with Hibernate Validation 5 style list constraint violations [SPR-15082] #19648
- Annotated method argument matching performance issue [SPR-15060] #19626
- AutoProxyRegistrar throws NullPointer on
@kotlin
.Metadata Annotation [SPR-15055] #19621 - Regression with poolTargetSource and scoped proxy [SPR-15042] #19608
- Constant error 416 for a byte-range request with content type application/octet-stream [SPR-15041] #19607
- ConcurrentModificationException in AbstractRequestExpectationManager [SPR-15029] #19596
- LinkedCaseInsensitiveMap does not properly support Java 8's merge() and compute() methods [SPR-15026] #19593
- Injecting bean in configurable class using load-time weaving broken when referenced on scoped-proxy class [SPR-14892] #19458