⭐ New Features
- ResizableByteArrayOutputStream and ByteArrayOutputStream capacities [SPR-11594] #16218
- Target Cache gets checked twice for every cache hit [SPR-11592] #16216
- MessageMethodArgumentResolver does not handle payload type and sub classes [SPR-11584] #16208
- Remove default use of SimpleAsyncTaskExecutor in WebSocketClient implementations [SPR-11580] #16204
- Add ApplicationEvents for WebSocket connection and disconnection [SPR-11578] #16202
- Support configuring WebSocket message buffer size [SPR-11575] #16199
- H2EmbeddedDatabaseConfigurer should set DB_CLOSE_ON_EXIT=false [SPR-11573] #16197
@ControllerAdvice
not detected from parent contexts (even though@Controller
is) [SPR-11570] #16194- Pass WebSocket session attributes in HandshakeInterceptor and expose them to MessageMapping methods [SPR-11566] #16190
- Introduce SQL script exception hierarchy [SPR-11564] #16188
- Refine BrokerAvailabilityEvent behavior in spring-messaging [SPR-11563] #16187
- Improve StAX<->SAX bridge [SPR-11549] #16174
- MVC handler method detection should ignore scopedTarget.x in favor of corresponding proxy bean [SPR-11548] #16173
- Optimize locking mechanism around storing flash attributes [SPR-11538] #16163
- relay-port type in xsd should be string [SPR-11537] #16162
- Improve exception message for failed property access in SpEL [SPR-11535] #16160
- Support receiving fragmented STOMP frames [SPR-11527] #16152
@PropertySource
ignoreResourceNotFound throws exception for unresolved placeholder values [SPR-11524] #16149- Treat empty log config refresh interval as infinite interval in Log4jWebConfigurer [SPR-11507] #16132
- Skip eager bean creation of ApplicationListener's if they are not type-compatible with the given event [SPR-11501] #16126
- Clarify the use of exception in the conversion API [SPR-11500] #16125
- Improve MockHttpServletRequest's compatibility with Servlet 3.1 [SPR-11492] #16117
- Jaxb2RootElementHttpMessageConverter doesn't allow for customizing Marshaller/Unmarshaller [SPR-11488] #16113
- Expose path-related request mapping settings in the MVC Java config [SPR-11486] #16111
- String method for PatternsRequestCondition#getMatchingCondition [SPR-11484] #16109
- Avoid unnecessary inspection of meta-annotations on Java annotations [SPR-11483] #16108
- CollectionToCollectionConverter.convert() improvement for untyped collections [SPR-11479] #16104
- Favor more locally declared composed annotations over inherited annotations in AnnotationUtils [SPR-11475] #16100
- MetaAnnotationUtils should support arbitrary levels of meta-annotations [SPR-11470] #16095
- AbstractMessageConverter.supportsMimeType() should facilitate more restrictive matching strategies [SPR-11463] #16089
- CompositeMessageConverter should allow MessageConverters to use different ContentTypeResolvers [SPR-11462] #16088
- DefaultContentTypeResolver should support String-based "contentType" header values [SPR-11461] #16087
- EntityManager should explicitly get closed for non-executed Query objects [SPR-11451] #16077
- AnnotationUtils.findAnnotation() should support arbitrary levels of meta-annotations [SPR-11448] #16074
- MockMvc needs to accept prepared URI with encoded URI path variables [SPR-11441] #16067
- Logs fill with unnecessary stack traces when using SockJS streaming transports [SPR-11438] #16064
- NumberUtils.convertNumberToTargetClass does not report overflow when converting BigInteger to Long [SPR-11434] #16060
- Improve configurability of EmbeddedDatabaseBuilder [SPR-11410] #16037
- Multi-message frames over STOMP. [SPR-11328] #15952
- Upgrade embedded ASM version to 5.0.1 [SPR-11239] #15864
- MethodInvokingFactoryBean not well-suited for non-factory methods [SPR-11196] #15822
- java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy exception when annotation config not found needs to specify what class is not found [SPR-10441] #15074
- Support multi-line SQL comments in ResourceDatabasePopulator and JdbcTestUtils [SPR-9531] #14165
- ServletContextResourceLoader performance problem: creates a lot of MalformedURLExceptions ("no protocol") in normal operation [SPR-8283] #12931
- ShallowEtagHeaderFilter should make use of specified content length [SPR-8271] #12919
🪲 Bug Fixes
- Referencing static field of class that extends Map in expression language causes class cast exception [SPR-11609] #16232
- ConversionService should remain capable of converting multidimensional array. [SPR-11608] #16231
- AbstractApplicationEventMulticaster can leak classes [SPR-11606] #16229
- Annotations on superclasses are detected by StandardAnnotationMetadata [SPR-11595] #16219
- Log Forging in DispatcherServlet via requestURI [SPR-11591] #16215
- BufferedImageHttpMessageConverter fails if JAI is installed [SPR-11581] #16205
- PayloadArgumentResolver does not honour Payload#required() [SPR-11577] #16201
- Support meta-annotation attribute overrides in ASM-based annotation processing [SPR-11574] #16198
- Custom HandshakeHandler not set when using particular xml configuration [SPR-11568] #16192
- Cache.get(key, type) doesn't work in case of null value found in cache [SPR-11567] #16191
- SQL Scripts with newline separators no longer work [SPR-11560] #16184
- Support Class meta-annotation attributes with ASM-based annotation processing [SPR-11557] #16181
- Connection to STOMP broker is retried in a tight loop if an AMQP port is specified [SPR-11554] #16178
- Providing unique names to prototype inner beans causes excessive memory and CPU use [SPR-11545] #16170
- Memory leak related to TCP connection management with use of STOMP broker relay [SPR-11531] #16156
- Autowiring unable to find generic dependency [SPR-11529] #16154
- Negative content-length causes NegativeArraySizeException when using SockJS on IE8 [SPR-11528] #16153
- Autowiring of Generic Types - StackOverflowError ResolvableType.isAssignableFrom(ResolvableType.java:259) [SPR-11522] #16147
- Memory leak when using annotation based auto-wiring in child context [SPR-11520] #16145
- ConstructorResolver will generate NPE in case of no factory method found when there are explicit args [SPR-11517] #16142
- Spring MVC Test can fail to obtain async result due to timing issue [SPR-11516] #16141
- Default KeyGenerator doesn't work for methods with arguments of array types [SPR-11505] #16130
- Unable to retrieve FlashMap when target parameters are encoded [SPR-11504] #16129
- SpringBeanELResolver - setValue throws PropertyNotWritableException [SPR-11502] #16127
- array varargs conversion error in SpEL expression [SPR-11494] #16119
- NPE in AbstractDispatcherServletInitializer when two Filter's are of the same type [SPR-11493] #16118
- XmlValidationModeDetector: length of a string is always greater than index of any of its characters [SPR-11477] #16102
- Autowiring unable to find generic dependency in case of nested unresolved type variable [SPR-11471] #16096
- ActiveProfilesResolver is supplied composed annotation class instead of test class [SPR-11467] #16093
- ContextLoader is supplied composed annotation class instead of test class for default resource detection [SPR-11455] #16081
- double evaluation of method arguments in SpEL [SPR-11445] #16071
- CORS for websocket breaks existing CORS Filter [SPR-11443] #16069
- RestTemplate's connection/read timeout settings not applied when using Apache HttpClient [SPR-11442] #16068
📔 Documentation
- Document that
@Conditional
on@Configuration
affects component scanning [SPR-11579] #16203 - Fix "Configuring the WebSocket Engine" documentation [SPR-11565] #16189
- Provide guidance on using X-Frame-Options with SockJS iframe transports [SPR-11496] #16121
- Missing documentation on how to set up JSR-303 method validation [SPR-11473] #16098
- Update reference manual to favor constructor injection [SPR-11459] #16085
- Document use of the reactor-tcp dependency [SPR-11449] #16075
- Undocumented auto CORS for websocket endpoint breaking existing CORS code [SPR-11437] #16063
- Improve documentation on the use of login/passcode headers for STOMP clients [SPR-11436] #16062
- Document how to convert Collections with ConversionService [SPR-11432] #16058