Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
4.3 RC2 Release
⭐ New Features
- SpEL Compiler: problems using primitives with instanceof operator [SPR-14250] #18823
- Timeout problem with Spring and Atomikos [SPR-14239] #18812
- Allow
@Cacheable
method to return java.util.Optional variant of cached value [SPR-14230] #18804 - Add get/set-IfUnmodifiedSince, get/set-IfMatch methods on HttpHeaders [SPR-14228] #18802
- Behavior of checkNotModified(String etag, long lastModifiedTimestamp) does not match HTTP recommendations [SPR-14224] #18798
- Consistent handling of multi-valued headers in HttpHeaders [SPR-14223] #18797
- Refactor HTTP Range support with a new ResourceRegion class [SPR-14221] #18795
- ServletWebRequest.isEtagNotModified does not support commas and spaces in client ETags [SPR-14216] #18790
- Support non-blocking receiveTimeout in AbstractPollingMessageListenerContainer [SPR-14212] #18786
- ScriptTemplateView can't load web-app resources [SPR-14210] #18784
- Support manual ACK and NACK in Stomp Client [SPR-14208] #18782
- HttpSessionRequiredException should have a getter for 'expected session attribute' [SPR-14206] #18780
- ResponseEntity should allow the usage of unassigned HTTP status codes [SPR-14205] #18779
- PathMatchingResourcePatternResolver should not re-resolve root URLs [SPR-14202] #18776
@RequestHeader
doesn't accept RFC-1123 for conversion to java.time.Instant [SPR-14201] #18775- DefaultMessageListenerContainer doesn't shutdown gracefully if long recovery interval is set [SPR-14200] #18774
- Java 8 default methods not detected as bean properties [SPR-14198] #18772
- Add text/markdown to MediaType [SPR-14192] #18765
- Support test annotations on interfaces [SPR-14184] #18755
- Support
@BeforeTransaction
and@AfterTransaction
on interface default methods [SPR-14183] #18754 - Let
@Scheduled
work with a non-void method how is possible with task:scheduled [SPR-14175] #18746 - Rename MimeType's getCharSet() to getCharset() [SPR-14172] #18744
- Improve failure metadata that is available from BeanInstantiationException [SPR-14166] #18738
- RestTemplate: Support default urlVariables at template level [SPR-14147] #18719
- Placeholder resolution for annotation attributes is not active by default [SPR-14140] #18712
- Add method to TestPropertySourceUtils to add properties files directly to the environment [SPR-14131] #18703
- Improve MimeTypeUtils to handle the case of only a delimiter passed [SPR-14124] #18696
- Unable to define empty java.util.Optional bean in spring xml [SPR-14121] #18693
- Possibility to configure a custom WebJarAssetLocator [SPR-14092] #18664
- Proper load-time weaving support for Hibernate 5 [SPR-13886] #18459
- AbstractAdvisorAutoProxyCreator should consistently detect package-visible methods [SPR-14174] #17890
@Scheduled
methods in@Lazy
beans are not scheduled [SPR-12872] #17470- Improve handling of missing JSF session in SessionScope [SPR-12402] #17010
- ScheduledAnnotationBeanPostProcessor should unregister tasks on destruction of individual beans [SPR-12216] #16830
- Detect LoadTimeWeaver bean when declared through
@Bean
method as well [SPR-10856] #15483
🪲 Bug Fixes
- AntPathMatcher Regression for trimTokens=true [SPR-14247] #18820
- CharacterEncodingFilter should have an option to avoid forcing encoding on responses [SPR-14240] #18813
- Annotated class with
@SendToUser
overrides@SendTo
on method [SPR-14238] #18811 - Regression: Handler method detection reporting ambiguous methods for explicit HEAD mapping [SPR-14182] #18753
- MockWebResponseBuilder can't handle null domain in cookie [SPR-14169] #18741
- AntPathMatcher regression in 4.3 RC1 [SPR-14141] #18713
📔 Documentation
4.2.6 Release
⭐ New Features
- Warn about non-static BeanDefinitionRegistryPostProcessor declarations on
@Configuration
classes [SPR-14234] #18808 - ApplicationListenerDetector should prevent serialization of its ApplicationContext reference [SPR-14214] #18788
- Avoid hard logging of WebApplicationInitializer classes [SPR-14213] #18787
- three constructors in the org.springframework.expression.spel.ast package are not public [SPR-14181] #18752
- MappingJackson2HttpMessageConverter should not always log a warning [SPR-14163] #18735
- Print EhCache cache manager name when initializing [SPR-14110] #18682
- AbstractStaxXMLReader should recognize standard features such as the string interning feature [SPR-14047] #18619
- Prevent Quartz XSD from being fetched from the Internet [SPR-13706] #18281
🪲 Bug Fixes
- AsyncResult calls SuccessCallback when it should call FailureCallback [SPR-14249] #18822
- AbstractRequestLoggingFilter appends null query string [SPR-14244] #18817
- Deadlock possible with AspectJ aspects and multi-threading [SPR-14241] #18814
- DefaultLifecycleProcessor hangs on shutdown when stopping with internalJmsListenerEndpointRegistry [SPR-14233] #18807
- Reactor2TcpClient does not remove TcpClient instances after connection closed [SPR-14231] #18805
- Reactor2TcpClient leaks threads on shutdown [SPR-14229] #18803
- SocketUtils fails to find a port when providing only two ports [SPR-14211] #18785
- FastByteArrayInputStream.read returns incorrect result [SPR-14209] #18783
- WebSocketMessageBrokerStats does not work unless SockJS is enabled with WebSocket XML namespace [SPR-14190] #18763
- NPE thrown when calling methods with an empty
@Caching
annotation [SPR-14162] #18734 - SimpleTransactionScope does not suspend and resume its scoped objects [SPR-14148] #18720
- Regression: If-Modified-Since value of zero not accepted anymore [SPR-14144] #18716
- WebSocketSessionDecorator.sendMessage does not delegate [SPR-14139] #18711
- AbstractWebSocketSession.sendMessage race condition [SPR-14138] #18710
- Java boolean is not handled correctly when used with Oracle JDBC driver [SPR-14116] #18688
- TransportHandlingSockJsService.scheduleSessionTask() doesn't log removed sessions [SPR-14111] #18683
- Wrong detection of event type on ApplicationListener<> when using lambdas (ClassCast Exception) [SPR-14109] #18681
- SockJS / XHR Polling does not reset connection for heartbeat [SPR-14107] #18679
@JmsListener
with autoStartup=false will never start [SPR-14105] #18677@RequestHeader
HttpHeaders fails with NPE against null header value [SPR-14091] #18663- Type annotations cause ArrayIndexOutOfBoundsException in ASM ClassReader [SPR-14089] #18661
- DefaultCorsProcessor's origin comparison is restrictive and inefficient [SPR-14080] #18652
- Reset Expires header in WebContentGenerator when caching resources [SPR-14053] #18625
- ModelAndView is replaced when a RedirectView is used [SPR-14045] #18617
- Regression: Early instantiation of a bean prevents proxying for
@Async
in 4.2.x but works in 4.1.x [SPR-14030] #18602 - Wrong ResolvableType for Event not extending from ApplicationEvent [SPR-14029] #18601
- springUrl Velocity macro should encode the given URI using the response [SPR-14027] #18599
- Scripted beans not updated after a script compilation error in getScriptedObjectType [SPR-14007] #18579
- Regression: ResourceHandlerRegistration setCachePeriod doesn't set the correct response header anymore [SPR-14005] #18577
- Regression: RequestMappingHandlerAdapter with synchronizeOnSession=true calls invokeHandlerMethod twice [SPR-13999] #18572
- LinkedCaseInsensitiveMap doesn't implement getOrDefault properly [SPR-13981] #18553
- First new line character is removed when use form:textarea tag [SPR-13503] #18081
📔 Documentation
- Section 19.3.2 of reference mentions Hibernate 3 should be just Hibernate [SPR-14176] #18747
@EnableScheduling
javadoc has incomplete XML example [SPR-14145] #18717- documentation : SpEL / Expression support for defining bean definitions / XML based configuration (9.4.1) [SPR-14074] #18646
- Wrong RFC reference in Base64Utils documentation [SPR-14067] #18639
3.2.17 Release
⭐ New Features
- SimpleTriggerFactoryBean and CronTriggerFactoryBean fail without jobDetail [SPR-13604] #18182
- Prevent Quartz XSD from being fetched from the Internet [SPR-13706] #18281
- Backport MVC config path config options to 3.2.x [SPR-14186] #18757
🪲 Bug Fixes
- Handle RejectedExecutionException in WebAsyncManager [SPR-13836] #18409
- NullPointerException while building error message in InvocableHandlerMethod [SPR-13917] #18491
- ReflectiveMethodResolver chooses parent class over child for static methods [SPR-13918] #18492
- AbstractMarshaller's DocumentBuilderFactory instance may be used by several threads simultaneously [SPR-13935] #18507
- TimerManagerTaskScheduler.TimerScheduledFuture.getDelay is inverted [SPR-13977] #18549
- Scripted beans not updated after a script compilation error in getScriptedObjectType [SPR-14007] #18579
- ModelAndView is replaced when a RedirectView is used [SPR-14045] #18617
@RequestHeader
HttpHeaders fails with NPE against null header value [SPR-14091] #18663- NPE thrown when calling methods with an empty
@Caching
annotation [SPR-14162] #18734 - Deadlock possible with AspectJ aspects and multi-threading [SPR-14241] #18814
- AbstractRequestLoggingFilter appends null query string [SPR-14244] #18817
📔 Documentation
4.3 RC1 Release
⭐ New Features
- Scoped proxies are fragile with respect to serialization [SPR-14117] #18689
- Auto-detect Kotlin Jackson module [SPR-14108] #18680
- Make localized field names lookup extensible in JSR-303 validation messages [SPR-14104] #18676
- LocalValidatorFactoryBean should expose a hook for using a custom ValidationProviderResolver [SPR-14100] #18672
- AnnotationTransactionAttributeSource should never apply to GroovyObject methods [SPR-14095] #18667
- AsyncRestTemplate should trigger no-output HTTP requests immediately as well [SPR-14093] #18665
- Refine TestPropertySourceUtils for Spring Boot usage [SPR-14088] #18660
- PathMatchingResourcePatternResolver should enforce consistent alphabetical sorting of directory content [SPR-14085] #18657
- Add setMultiTenantConnectionProvider to org.springframework.orm.hibernate5.LocalSessionFactoryBean [SPR-14072] #18644
- Support for HTTP Vary configuration (e.g. in reaction to locale-based rendering) [SPR-14070] #18642
- MockMvcWebConnection should share CookieManager with HtmlUnit driver [SPR-14066] #18638
- Allow
@Autowired
to be declared on parameters [SPR-14057] #18629 - Support creation of SynthesizingMethodParameter for constructor parameter [SPR-14054] #18626
- MockHttpServletResponse should convert Cookies into Set-Cookie header [SPR-14051] #18623
- ReflectionTestUtils should automatically unwrap proxies [SPR-14050] #18622
- DefaultUserDestinationResolver does not support "." separator convention [SPR-14044] #18616
- Reject
@ManagedResource
a on class which is not public [SPR-14042] #18614 - BigDecimal to Integer/Short/Byte should overflow like BigDecimal to Long does [SPR-14041] #18613
- HTTP persistent connections for HTTP Invoker and RestTemplate [SPR-14040] #18612
- Support conversion between Enum and Integer [SPR-14039] #18611
- Provide flag to allow ServletTestExecutionListener to run without
@WebAppConfiguration
[SPR-14035] #18607 - InjectionPoint/DependencyDescriptor as injectable argument for
@Bean
methods [SPR-14033] #18605 - Adding ability to read result sets row-by-row for MySql driver [SPR-14028] #18600
- Reconsider enablement of JNDIPropertySource by default [SPR-14026] #18598
- Support for OkHttp 3 [SPR-14024] #18596
- Remove double slash from resolved WebJar resources [SPR-14018] #18590
- Custom key classes for HashMap should implement Comparable [SPR-14017] #18589
- Make TestContextManager.getTestContext() public [SPR-14011] #18583
- Support placeholder for
@CrossOrigin
[SPR-14010] #18582 - Allow
@ComponentScan
custom filters to implement *Aware interfaces [SPR-14009] #18581 - Allow non-public
@Transactional
test methods [SPR-14000] #18573 - Introduce ContextCustomizer API in the TestContext framework [SPR-13998] #18571
- Support
@BeforeTransaction
and AfterTransaction on non-public methods [SPR-13997] #18570 - Validator is not set after initializing web socket MessageBroker from xml configuration [SPR-13996] #18569
- Introduce common composed annotations for web scopes [SPR-13993] #18566
- Introduce common composed annotations for
@RequestMapping
[SPR-13992] #18565 - Remove
@BootstrapWith
from@WebAppConfiguration
[SPR-13991] #18564 - Unique XML-specified constructor not accepted in case of unresolvable name [SPR-13987] #18559
- Consistent resolution of factory method exceptions [SPR-13985] #18557
- Support JacksonXmlModule.setDefaultUseWrapper [SPR-13975] #18547
- Support repeatable annotations as composed annotations [SPR-13973] #18545
- Allow a single element to override an array attribute in a meta-annotation [SPR-13972] #18544
- Improve CacheOperation equals/hashCode implementation performance [SPR-13970] #18542
- Allow spring.factories to load package private classes [SPR-13969] #18541
- Improve core container exception meta-data [SPR-13968] #18540
- TestContextManager.afterTestMethod doesn't handle java.lang.Error! [SPR-13961] #18534
- Consistent behavior for unwrap(null) on JPA and Bean Validation wrappers [SPR-13960] #18533
- ObjectFactory lacks method for getting bean with specified constructor arguments [SPR-13956] #18529
- Allow
@ContextConfiguration
to be omitted [SPR-13955] #18528 - Provide shorter 'alias' for SpringJUnit4ClassRunner [SPR-13954] #18527
@RequestHeader
name/value does not accept placeholders [SPR-13952] #18525- Prevent accessing the session in ServletRequestAttributes.updateAccessedSessionAttributes() if no session attributes need to be updated [SPR-13950] #18522
- Mis-typed URL should give 404 not 405 [SPR-13944] #18516
- An ObjectFactory variant with lenient not-unique handling [SPR-13943] #18515
- OkHttp RestTemplate adapter uses inappropriate async requests [SPR-13942] #18514
- Support for Common Annotations 1.1's javax.annotation.Resource.lookup() [SPR-13941] #18513
- Duplicate method signature in reference doc example [SPR-13940] #18512
- Provide way in MVC Java config to modify rather than replace default HandlerExceptionResolvers [SPR-13931] #18503
- ThreadPoolTaskExecutor does not allow for decorating Runnables [SPR-13930] #18502
- Consistent API between spring-web and spring-messaging HandlerMethod infrastructure [SPR-13929] #18501
- Speed up AntPathMatcher by doing prefix-match [SPR-13913] #18487
- Ability to add a custom ResourceLoader conveniently in AnnotationConfigWebApplicationContext or conveniently as can be done via spring boot [SPR-13905] #18479
- Convenient access to session and request attributes in controller methods [SPR-13894] #18468
- Support 'primary' transaction managers and data sources in the TestContext Framework [SPR-13891] #18465
- AnnotationAwareOrderComparator getP...
4.2.5 Release
⭐ New Features
- Support of SQL warnings in ScriptUtils [SPR-13959] #18532
- PathMatchingResourcePatternResolver should provide consistent logging [SPR-13923] #18495
- Automatically register a fixed path pattern when using a FixedStrategy with VersionResourceResolver [SPR-13883] #18456
- Improve Jackson 2.7 compatibility [SPR-13853] #18426
- Lot of undesired WARN logs after migration from Spring 3 to Spring 4 [SPR-13833] #18406
- Oracle 12c JDBC driver throws inconsistent exception from getParameterType (affecting setNull calls) [SPR-13825] #18398
- SimpleTriggerFactoryBean and CronTriggerFactoryBean fail without jobDetail [SPR-13604] #18182
- SimpleNamespaceContext does not implement the full contract of the NamespaceContext interface [SPR-13713] #17620
🪲 Bug Fixes
- TimerManagerTaskScheduler.TimerScheduledFuture.getDelay is inverted [SPR-13977] #18549
@Lazy
with@Autowired
(required=false) throws NullPointerException on invocation [SPR-13967] #18539- Spring ORM doesn't support addNamedQuery with EclipseLink [SPR-13957] #18530
- (Web)MergedContextConfiguration.equals is not symmetrical [SPR-13951] #18524
- AbstractMarshaller's DocumentBuilderFactory instance may be used by several threads simultaneously [SPR-13935] #18507
- Spring fails to find bean's destroy method in case there is a bridge method [SPR-13922] #18494
- ReflectiveMethodResolver chooses parent class over child for static methods [SPR-13918] #18492
- NullPointerException while building error message in InvocableHandlerMethod [SPR-13917] #18491
- AbstractXlsxView does not work on WebSphere Liberty Profile [SPR-13910] #18484
- Regression: BufferedImageHttpMessageConverter does not set content-type header [SPR-13906] #18480
- STOMP over SockJS is unreliable [SPR-13904] #18478
@Transactional
tests are executed without a transaction if transaction manager is not discovered [SPR-13895] #18469- Regression: SPR-12443 breaks singleton bean references within a configuration class with null arguments [SPR-13887] #18460
- LocalSessionFactoryBean (hibernate5) does not correctly pass custom ClassLoader to Hibernate [SPR-13879] #18452
- ServletServerHttpRequest.getURI() escape the query parameters twice [SPR-13876] #18449
- SessionDisconnectEvent.getUser() returns null instead of the session user [SPR-13871] #18444
- ResponseEntity CacheControl ignored / extended by RequestMappingHandlerAdapter [SPR-13867] #18440
- FastByteArrayOutputStream$FastByteArrayInputStream behaves incorrectly when no data is available [SPR-13858] #18431
- Spring does not reliably detect circular imports in Java configurations [SPR-13852] #18425
- RequestPartMethodArgumentResolver should defensively handle MethodParameter nesting level and java.util.Optional access [SPR-13850] #18423
- Regression: ResourceUrlEncodingFilter can throw StringIndexOutOfBoundsException with relative URL [SPR-13847] #18420
- Regression: Shared EntityManager proxy insists on actualTransactiveActive flag even with SYNCHRONIZATION_NEVER [SPR-13838] #18411
- Handle RejectedExecutionException in WebAsyncManager [SPR-13836] #18409
- Regression: Spring 4.2.4 fails to load configuration class on Google App Engine [SPR-13829] #18402
- Preserve HTTP headers when caching resources in CachingResourceResolver [SPR-13817] #18390
- Correct spring-websocket-4.2 versus spring-websocket-4.1 xsd declarations [SPR-13804] #18377
- DefaultMessageListenerContainer hangs on shutdown [SPR-11787] #16409
📔 Documentation
4.2.4 Release
⭐ New Features
- Base64Utils: Support URL and filename safe alphabet (RFC 4648) [SPR-13784] #22188
- Provide an easy way to populate a request in MockMvc for form input scenarios [SPR-13801] #18374
- Defensive error reporting when ConfigurationClassParser introspects declared methods via StandardAnnotationMetadata [SPR-13791] #18364
- ReflectionUtils cache uses up a fairly big chunk of heap even [SPR-13783] #18357
- Allow for setting TTL on a response sent by
@JmsListener
[SPR-13774] #18348 - Support for Microsoft SQL Server driver version 4 and above [SPR-13772] #18346
- AbstractRequestLoggingFilter with startAsync: unwrap request to find ContentCachingRequestWrapper [SPR-13764] #18338
- Configure view controllers with the ApplicationContext [SPR-13762] #18335
- BeanFactoryAnnotationUtils.qualifiedBeanOfType should not instantiate all beans of given type before checking qualifier [SPR-13741] #18314
- Consistent bean type checking for endpoint handlers [SPR-13725] #18298
- Add JSR 310 Period and Duration Converters [SPR-13721] #18294
- Cache detected factory methods in ObjectToObjectConverter [SPR-13703] #18278
@ManagedOperationParameter
not marked with@Target
/@Retention
/@Documented
/@Repeatable
[SPR-13700] #18275- Allow SpelCompiler to compile MapAccessor expressions [SPR-13638] #18215
- Conversion support for java.time.YearMonth (as well as MonthDay) [SPR-13518] #18095
- Allow the ManagedResource/Attribute/Metric/Operation to be placed on interface [SPR-13138] #17729
- Allow setting custom ClassPathBeanDefinitionScanner on AnnotationConfigWebApplicationContext [SPR-9324] #13962
- Add conversion support for Joda Duration and Period [SPR-6706] #11372
🪲 Bug Fixes
- java.lang.NullPointerException at org.springframework.test.web.servlet.result.MockMvcResultHandlers.(MockMvcResultHandlers.java:44) [SPR-13802] #18375
- VersionResourceResolver's versionStrategyMap should keep insertion order [SPR-13798] #18371
- Jdbc4SqlXmlHandler should return null as documented (instead of throwing NPE) [SPR-13782] #18356
- VerifyError when trying to compile constructor invocation with SpEL [SPR-13781] #18355
- Regression: HttpEntityMethodProcessor does not allow other Http methods than defined in the HttpMethod Enum [SPR-13776] #18350
- MessagingMessageListenerAdapter provides a BytesMessage that has already been read [SPR-13769] #18343
- Inefficient and inconsistent setAllowedOrigins collection types in AbstractSockJsService/OriginHandshakeInterceptor [SPR-13761] #18334
- allowed-origins are not resolved from properties variables [SPR-13760] #18333
- ControllerAdviceBean javadoc is inconsistent with its implementation [SPR-13759] #18332
- ResourceUrlEncodingFilter improperly encodes URLs on root page [SPR-13757] #18330
- Second call to MVC handler method with Optional parameter fails with argument type mismatch [SPR-13755] #18328
- MockHttpServletResponse.setIntHeader throws exception for 'Content-Length' header [SPR-13752] #18325
- The URL content negotiation "format" parameter values are case sensitive and only lowercase values are accepted [SPR-13747] #18320
- SubProtocolWebSocketHandler does not update lastSessionCheckTime [SPR-13745] #18318
- NoClassDefFoundError: org/joda/time/YearMonth for joda-time < 2 [SPR-13730] #18303
- CssLinkResourceTransformer is incompatible with FixedVersionStrategy VersionResourceResolver [SPR-13727] #18300
- Regression: AsyncAnnotationBeanPostProcessor fails on startup when encountering ambiguous TaskExecutor beans [SPR-13720] #18293
- Regression: ShallowEtagHeaderFilter does not add Etag header for ResponseEntity returning methods [SPR-13717] #18290
- Regression: UriTemplate does not match when URI ends with slash [SPR-13705] #18280
- SimpAnnotationMethodMessageHandler fails when no applicationDestinationPrefixes configured or Rabbit endpoint present [SPR-13704] #18279
- SynthesizedAnnotation is not visible from class loader [SPR-13696] #18271
- Regression: Spring on WildFly causing ClassNotFoundException in ASM when deployed outside of EAR [SPR-13695] #18270
- HTTP Range requests hang on large file in nested jar [SPR-13661] #18236
- EventListenerMethodProcessor resolves classes of lazy beans causing NoClassDefFoundError [SPR-13712] #17619
- SpEL compiler creating bad byte code for some values that are added together via OpPlus [SPR-12426] #17032
📔 Documentation
4.1.9 Release
⭐ New Features
- Allow setting custom ClassPathBeanDefinitionScanner on AnnotationConfigWebApplicationContext [SPR-9324] #13962
- Skip Content-Disposition header when status != 2xx [SPR-13588] #18165
- Avoid NPE for anonymous SqlParameter in CallMetaDataContext [SPR-13628] #18206
- Content-Disposition with fixed file name "f.txt" causes confusion [SPR-13643] #18220
- Revisit BeansException warn logging after startup failure [SPR-13663] #18238
- Implement containsKey for HttpHeaders returned from ServletServerHttpResponse [SPR-13668] #18243
- BeanFactoryAnnotationUtils.qualifiedBeanOfType should not instantiate all beans of given type before checking qualifier [SPR-13741] #18314
- Configure view controllers with the ApplicationContext [SPR-13762] #18335
- AbstractRequestLoggingFilter with startAsync: unwrap request to find ContentCachingRequestWrapper [SPR-13764] #18338
- Support for Microsoft SQL Server driver version 4 and above [SPR-13772] #18346
- Allow for setting TTL on a response sent by
@JmsListener
[SPR-13774] #18348 - Defensive error reporting when ConfigurationClassParser introspects declared methods via StandardAnnotationMetadata [SPR-13791] #18364
🪲 Bug Fixes
- SpEL compiler creating bad byte code for some values that are added together via OpPlus [SPR-12426] #17032
- mvc:view-resolvers does not reliably find declared ContentNegotiationManager [SPR-13559] #18135
- Content-Disposition header causes download in browser for Spring Boot Actuator endpoints [SPR-13587] #18164
- AbstractJdbcCall's compiled variable should be declared as volatile [SPR-13617] #18195
- webjars resource handling may run into NPE in JarURLInputStream [SPR-13620] #18198
- Content-Disposition added for
@ResponseBody
methods explicitly mapped to ".html" or other extensions [SPR-13629] #18207 - SerializableTypeWrapper.MethodInvokeTypeProvider can be exploited for unsafe deserialization [SPR-13656] #18232
- CommonsMultipartFile.getOriginalFilename() does not strip file path properly [SPR-13662] #18237
- AbstractApplicationContext.isRunning throws IllegalStateException when called too early [SPR-13667] #18242
- SimpAnnotationMethodMessageHandler fails when no applicationDestinationPrefixes configured or Rabbit endpoint present [SPR-13704] #18279
- CssLinkResourceTransformer is incompatible with FixedVersionStrategy VersionResourceResolver [SPR-13727] #18300
- SubProtocolWebSocketHandler does not update lastSessionCheckTime [SPR-13745] #18318
- The URL content negotiation "format" parameter values are case sensitive and only lowercase values are accepted [SPR-13747] #18320
- MockHttpServletResponse.setIntHeader throws exception for 'Content-Length' header [SPR-13752] #18325
- Second call to MVC handler method with Optional parameter fails with argument type mismatch [SPR-13755] #18328
- ResourceUrlEncodingFilter improperly encodes URLs on root page [SPR-13757] #18330
- ControllerAdviceBean javadoc is inconsistent with its implementation [SPR-13759] #18332
- allowed-origins are not resolved from properties variables [SPR-13760] #18333
- Inefficient and inconsistent setAllowedOrigins collection types in AbstractSockJsService/OriginHandshakeInterceptor [SPR-13761] #18334
- MessagingMessageListenerAdapter provides a BytesMessage that has already been read [SPR-13769] #18343
- VerifyError when trying to compile constructor invocation with SpEL [SPR-13781] #18355
- Jdbc4SqlXmlHandler should return null as documented (instead of throwing NPE) [SPR-13782] #18356
- VersionResourceResolver's versionStrategyMap should keep insertion order [SPR-13798] #18371
📔 Documentation
- Fix cron trigger example in reference documentation [SPR-10474] #15107
- Revisit remaining XmlBeanFactory usage in reference documentation [SPR-13485] #18064
- Error in RequestEntity's javadoc [SPR-13666] #18241
- Cacheable#key should define the available arguments [SPR-13746] #18319
- Documentation is missing for sendTimeLimit bufferSizeLimit for ConcurrentWebSocketSessionDecorator [SPR-13753] #18326
3.2.16 Release
⭐ New Features
- Skip Content-Disposition header when status != 2xx [SPR-13588] #18165
- Avoid NPE for anonymous SqlParameter in CallMetaDataContext [SPR-13628] #18206
- Content-Disposition with fixed file name "f.txt" causes confusion [SPR-13643] #18220
- Revisit BeansException warn logging after startup failure [SPR-13663] #18238
- BeanFactoryAnnotationUtils.qualifiedBeanOfType should not instantiate all beans of given type before checking qualifier [SPR-13741] #18314
- Support for Microsoft SQL Server driver version 4 and above [SPR-13772] #18346
🪲 Bug Fixes
- Content-Disposition header causes download in browser for Spring Boot Actuator endpoints [SPR-13587] #18164
- AbstractJdbcCall's compiled variable should be declared as volatile [SPR-13617] #18195
- Content-Disposition added for
@ResponseBody
methods explicitly mapped to ".html" or other extensions [SPR-13629] #18207 - CommonsMultipartFile.getOriginalFilename() does not strip file path properly [SPR-13662] #18237
- AbstractApplicationContext.isRunning throws IllegalStateException when called too early [SPR-13667] #18242
- Jdbc4SqlXmlHandler should return null as documented (instead of throwing NPE) [SPR-13782] #18356
📔 Documentation
- Fix cron trigger example in reference documentation [SPR-10474] #15107
4.2.3 Release
⭐ New Features
- Support for HtmlUnit 2.19 [SPR-13686] #18261
- Implement containsKey for HttpHeaders returned from ServletServerHttpResponse [SPR-13668] #18243
- Revisit BeansException warn logging after startup failure [SPR-13663] #18238
- AbstractAutoProxyCreator.getCacheKey generate lots of String garbage [SPR-13655] #18231
- Consistent method selection for listeners and endpoint mappings [SPR-13654] #18230
@EventListener
does not work if put it at method in class that implements interface [SPR-13650] #18226- Content-Disposition with fixed file name "f.txt" causes confusion [SPR-13643] #18220
- JCache CacheResultInterceptor does not allow null values to be cached [SPR-13641] #18218
- JmsListenerEndpointRegistry - expose
@JmsListener
ids [SPR-13633] #18211 - Avoid NPE for anonymous SqlParameter in CallMetaDataContext [SPR-13628] #18206
- UriTemplate should support regex matching with n times {n} pattern [SPR-13627] #18205
- Improve and/or provide control over ETag/If-None-Match logic in HttpEntityMethodProcessor [SPR-13626] #18204
- Performance regression on startup (in particular in AnnotationUtils) [SPR-13621] #18199
- Offer public API to add default collection converters [SPR-13618] #18196
- Support Spring-WS's MessageDispatcherServlet in AbstractDispatcherServletInitializer [SPR-13616] #18194
- MockMvc: afterCompletion is never called on CallableProcessingInterceptor and DeferredResultProcessingInterceptor [SPR-13615] #18193
- Consistent warn logging without stacktrace in Portlet HandlerExceptionResolver [SPR-13611] #18189
- Add selection of compare mode for Json assertion [SPR-13607] #18185
- Inappropriate warn logging in AbstractHandlerExceptionResolver (e.g. for 404 status) [SPR-13596] #18174
- SseEmitter cannot use "send(SseEventBuilder builder)" method with custom SseEventBuilder implementation [SPR-13591] #18169
- Skip Content-Disposition header when status != 2xx [SPR-13588] #18165
- Spring JDBC not correctly processing Postgresql ?-contained operator [SPR-13582] #18159
- Incorrect
@JmsListener
parameter matching when the listener is a JDK proxy [SPR-13576] #18153 - Make CharacterEncodingFilter more friendly for use in Servlet 3.0+ environments [SPR-13572] #18148
- Compatibility with WebLogic 12.2.1 / Tyrus 1.11 [SPR-13234] #17825
- Unable to use Configuration classes in signed jar due to CGLIB [SPR-12833] #17430
🪲 Bug Fixes
@EventListener
doesn't work when@PreAuthorize
is present on any interface method implemented by the same class [SPR-13866] #18439- EventListener in a Request scoped bean fails context initialization [SPR-13681] #18256
- ScheduledTaskRegistrar's task list getters fail with NPE when no tasks set [SPR-13680] #18255
- CorsConfiguration#combine() should handle correctly * in "other" parameter [SPR-13674] #18249
- ShallowEtagHeaderFilter.setContentLength causes an error when rendering a jsp which performs an include: [SPR-13671] #18246
- SimpleJdbcCall does not throw an Exception for a missing stored procedure if the name does not contain "." [SPR-13669] #18244
- AbstractApplicationContext.isRunning throws IllegalStateException when called too early [SPR-13667] #18242
- CommonsMultipartFile.getOriginalFilename() does not strip file path properly [SPR-13662] #18237
- SerializableTypeWrapper.MethodInvokeTypeProvider can be exploited for unsafe deserialization [SPR-13656] #18232
- CommonsMultipartResolver.setMaxUploadSizePerFile() does not work if encoding does not match the default encoding [SPR-13653] #18229
- Setting StandaloneMockMvcBuilder.useSuffixPatternMatch = false does not work [SPR-13637] #18214
- IllegalArgumentException when using AnnotationUtils.findAnnotation [SPR-13634] #18212
- Content-Disposition added for
@ResponseBody
methods explicitly mapped to ".html" or other extensions [SPR-13629] #18207 - webjars resource handling may run into NPE in JarURLInputStream [SPR-13620] #18198
- UndertowRequestUpgradeStrategy not compatible with WildFly anymore [SPR-13619] #18197
- AbstractJdbcCall's compiled variable should be declared as volatile [SPR-13617] #18195
- Autowiring throws NullPointerException [SPR-13599] #18177
- Content-Disposition header causes download in browser for Spring Boot Actuator endpoints [SPR-13587] #18164
- mvc:view-resolvers does not reliably find declared ContentNegotiationManager [SPR-13559] #18135
- Unable to intercept methods with mixed enum types as varargs [SPR-13328] #17913
📔 Documentation
- Error in RequestEntity's javadoc [SPR-13666] #18241
- Clarify javadoc for ContentNegotiationConfigurer's ignoreAcceptHeader [SPR-13642] #18219
- Explain when to use MediaType constants [SPR-13531] #18108
- Explain when and why use Jaxb2RootElementHttpMessageConverter vs MarshallingHttpMessageConverter [SPR-13530] #18107
- Update reference documentation for spring JSP Tag Library [SPR-13520] #18097
- Improve documentation about CookieLocaleResolver vs SessionLocaleResolver [SPR-13505] #18083
- Revisit remaining XmlBeanFactory usage in reference documentation [SPR-13485] #18064
- Fix cron trigger example in reference documentation [SPR-10474] #15107
- Documentation example miss
@EnableScheduling
[SPR-10448] #15081 - Provide better documentation for support of JSR-330 (
@Inject
) [SPR-7858] #12515
4.2.2 Release
⭐ New Features
- Add support for configuring ObjectMapper's default typing using Jackson2ObjectMapperBuilder [SPR-13569] #18145
- Compatibility with GlassFish 4.1.1 / Tyrus 1.12 [SPR-13566] #18142
- Improve error reporting in StandardScriptEvaluator [SPR-13557] #18133
- Protect against RFD exploits [SPR-13548] #18124
- Provide empty Model to
@ExceptionHandler
methods [SPR-13546] #18122 - Throw exception with meaningful message if JUnit 4.9+ not present [SPR-13521] #18098
- Improve org.springframework.util.StopWatch [SPR-13509] #18087
- SseEmitter should ignore calls to send after timeout [SPR-13498] #18076
- Make UndertowRequestUpgradeStrategy compatible with Undertow 1.3 [SPR-13494] #18072
- Revise script engine retrieval for better error reporting [SPR-13491] #18069
- Improve error reporting for template rendering in ScriptTemplateView [SPR-13488] #18066
- Consider Nashorn ScriptEngine instance scope in ScriptTemplateView [SPR-13487] #18065
- Origins doesn't anticipate an Origin header with a path [SPR-13478] #18057
- Support
@CrossOrigin
as a merged composed annotation [SPR-13468] #18047 - Same origin stops working for WebSocket/SockJS once any origin is configured [SPR-13464] #18044
- Add 'null-value' attribute to context:property-placeholder [SPR-13461] #18041
- Expose view url to render function in ScriptTemplateView [SPR-13453] #18033
- SseEmitter does not expose super constructor with timeout value [SPR-13446] #18026
- Read large data using InputStreamResource at ResourceHttpMessageConverter [SPR-13443] #18023
- Support
@ResponseStatus
as a merged composed annotation [SPR-13441] #18021 - Double slashes (optional Path variable) removed via MockHttpServletRequestBuilder [SPR-13435] #18014
- ClasspathXmlApplicationContext cannot be closed twice [SPR-13425] #18004
- Make UndertowXhrTransport compatible with Undertow 1.3 [SPR-13366] #17950
- Jackson2ObjectMapperFactoryBean.setAutoDetectGettersSetters(boolean) does not affect "is" getters [SPR-13073] #17665
- Support for last-modified resolution in Tomcat's unpackwar=false mode [SPR-13393] #17434
- RequestResponseBodyMethodProcessor should turn IOException to HttpMessageNotReadableException [SPR-12745] #17342
- Better handling of illegal locale values in LocaleChangeInterceptor [SPR-9456] #14091
- Add valueSeparator property to context:property-placeholder [SPR-7794] #12450
🪲 Bug Fixes
- Clarify whether HttpInputMessage.getBody() is allowed to return null [SPR-13563] #18139
- Close processing triggered by shutdown hook isn't thread safe [SPR-13556] #18132
- DefaultSubscriptionRegistry loses track of subscribers in its cache [SPR-13555] #18131
- JCacheCache doesn't recognize null values in other JVMs [SPR-13553] #18129
- Modifications to UndertowXhrTransport for Undertow 1.3 introduce breaking changes [SPR-13551] #18127
- Consistently detect spring-beans.dtd reference [SPR-13549] #18125
- Null Pointer when receiving an invalid transport type during SockJS request [SPR-13545] #18121
- PayloadApplicationEvent can't hit cache [SPR-13543] #18119
- MessageHeaders is declared immutable - but writeObject() removes any non-serializable fields [SPR-13541] #18117
- OutOfMemory Exception when publishing User Events [SPR-13540] #18116
- Spring incorrectly interprets a bean to be a spring eventlistener [SPR-13538] #18114
- ClassNotFoundException: org.xnio.StreamConnection in Wildfly 10.0.0.CR2 [SPR-13529] #18106
- EventListenerMethodProcessor unconditionally instantiates certain beans, leading to BeanCreationException during deployment [SPR-13526] #18103
- Not valid processing of 'Origin' http header [SPR-13525] #18102
- HtmlUnitRequestBuilder doesn't handle query parameters without equals sign [SPR-13524] #18101
- ResourceHttpRequestHandler fails with IllegalArgumentException: No matching constant for [0] [SPR-13516] #18093
- YamlProcessor subclasses can no longer instantiate StrictMapAppenderConstructor [SPR-13504] #18082
- ETag/If-None-Match logic in HttpEntityMethodProcessor should not affect methods other than HTTP GET [SPR-13496] #18074
- ConcurrentModificationException when executing AutowireCapableBeanFactory.createBean [SPR-13493] #18071
- Potential double invocation of getMissingCache in AbstractCacheManager [SPR-13492] #18070
- AbstractEmbeddedDatabaseConfigurer.shutdown does not close JDBC resources [SPR-13474] #18053
- ConcurrentMapCache.putIfAbsent doesn't support null values [SPR-13458] #18038
- Regression: UrlPathHelper.getLookupPathForRequest(…) returns different results for URIs containing matrix parameters [SPR-13455] #18035
- DeferredResult not thread-safe for isSetOrExpired call [SPR-13451] #18031
- MessagingException should not provide empty description String to NestedRuntimeException [SPR-13447] #18027
- ScriptTemplateView should close the template InputStream [SPR-13445] #18025
- ConcurrentModificationException in SingleConnectionFactory$AggregatedExceptionListener [SPR-13421] #18000
- ServletWebRequest.checkNotModified attempts to call HttpServletResponse.getHeader(String) on Servlet 2.5 [SPR-13420] #17999
- Regression:
@RequestBody
(required = false) not respected [SPR-13417] #17996 - StompDecoder fails for partial headers containing escape sequence [SPR-13416] #17995
- ConcurrentModificationException when doing a merge on AbstractEnvironment [SPR-13213] #17805
- ConcurrentModificationException in DefaultListableBeanFactory.doGetBeanNamesForType() [SPR-13123] #17714
- Registering two beans at the same time throws ConcurrentModificationException [SPR-12503] #17108
📔 Documentation
- Dispel the myth that Spring MVC Test only works with JUnit [SPR-13552] #18128
- Documentation for Portlet MVC does not refer to Portlet 2.0 spec (JSR-286) [SPR-13513...