⭐ New Features
- AbstractMarshaller should avoid SAXSource workaround when processExternalEntities=true [SPR-11737] #16359
- AbstractAdvisingBeanPostProcessor.isEligible(…) does not consider proxy interfaces [SPR-11725] #16347
- Metadata reading should never use ASM for java.* and javax.* types (in particular on JDK 8) [SPR-11719] #16341
- Fix/optimize handling of
@Bean
method override regression with return type narrowing on JDK 8 [SPR-11718] #16340 - Skip multipart checking so that multipart errors can be handled in an
@Controller
method using Servlet 3 [SPR-11716] #16338 - Improve Servlet 3 presence check in ServletServerHttpResponse [SPR-11712] #16334
- ShallowEtagHeaderFilter should write body early when HttpServletResponse.sendError() is called [SPR-11705] #16327
- XStreamMarshaller: Can't parse XML with '_' in the attribute names [SPR-11702] #16324
- Support EOF as statement separator in SQL scripts [SPR-11687] #16310
- no msg when cannot authorize against external queue [SPR-11673] #16296
- Improve handling of disconnect events in STOMP broker relay [SPR-11655] #16278
- MarshallingView should avoid temporary byte array when copying to response [SPR-11646] #16269
- Optimize performance of escaping in StompEncoder and StompDecoder [SPR-11643] #16266
- XStreamMarshaller forces XPP dependency [SPR-11635] #16258
- Support simultaneous use of classes and locations in
@ContextConfiguration
[SPR-11634] #16257 - Update NativeWebSocketSession getters to return basic information required after close [SPR-11621] #16244
- Overriding bean definition message does not take parent definition into account [SPR-9671] #14305
🪲 Bug Fixes
- Generics and caching causing issues [SPR-13358] #17942
- JRubyScriptUtils fails against JRuby 1.7.12 with NullPointerException in findClassNode [SPR-11747] #16369
- If-Modified-Since header is parsed as HTTP-date; but IE 10 sends length [SPR-11727] #16349
- SpringProperties: the ClassLoader might be null, if class is loaded by the bootstrap class loader [SPR-11721] #16343
- ConcurrentReferenceHashMap doesn't limit upper concurrency level [SPR-11720] #16342
- ShallowEtagHeaderFilter setContentLength on include [SPR-11717] #16339
- AnnotationReadingVisitorUtils.getMergedAnnotationAttributes() mutates the map argument [SPR-11710] #16332
- ClassCastException when evaluating the eq/ne operator in the EL [SPR-11708] #16330
@CachePut
evaluates incorrectly expressions for the different implementation of the same interface [SPR-11692] #16314- Form select tag "multiple" attribute not recognized [SPR-11678] #16301
- UrlResource.exists() does not properly detect JBoss vfszip resources [SPR-11676] #16299
- DefaultSubscriptionRegistry does not handle subscriptions in Ant-style [SPR-11657] #16280
- NPE in AbstractMessageSendingTemplate when headers are null and converter returns null [SPR-11653] #16276
- AnnotationReadingVisitorUtils.getMergedAnnotationAttributes() overrides values it should not [SPR-11649] #16272
- SUBSCRIBE response message should match the original message destination [SPR-11648] #16271
- Regression:
@ComponentScan
fails for AnnotationConfigWebApplicationContext [SPR-11647] #16270 - ResourceHttpRequestHandler not closing Resource's input stream [SPR-11644] #16267
@PropertySource
locations are being dropped in ConfigurationClassParser processPropertySource [SPR-11637] #16260- Servlet mocks are not reinjected into test instance between TestNG test methods [SPR-11626] #16249
- Adding a ChannelInterceptor suppresses default executor settings in the XML namespace [SPR-11623] #16246
- Unsafe fallback pointcut construction in AspectJExpressionPointcut [SPR-9335] #13973