Skip to content

Releases: spring-projects/spring-framework

4.2.3 Release

17 Jan 14:32
Compare
Choose a tag to compare

⭐ 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

17 Jan 14:32
Compare
Choose a tag to compare

⭐ 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...
Read more

4.1.8 Release

17 Jan 14:33
Compare
Choose a tag to compare

⭐ New Features

  • Make AbstractFallbackTransactionAttributeSource.computeTransactionAttribute(…) protected [SPR-13246] #17837
  • Avoid ambiguous property warning for setter methods with multiple parameters [SPR-13349] #17933
  • Support for last-modified resolution in Tomcat's unpackwar=false mode [SPR-13393] #17434
  • ClasspathXmlApplicationContext cannot be closed twice [SPR-13425] #18004
  • Protect against RFD exploits [SPR-13548] #18124
  • Compatibility with GlassFish 4.1.1 / Tyrus 1.12 [SPR-13566] #18142

🪲 Bug Fixes

  • ConcurrentModificationException when doing a merge on AbstractEnvironment [SPR-13213] #17805
  • PathResourceResolver should not resolve "/" as a JAR resource [SPR-13241] #17832
  • PropertyOrFieldReference throws ClassCastException [SPR-13247] #17838
  • Race condition when inbound message handling fails and StompSubProtocolHandler sends ERROR frame [SPR-13326] #17911
  • Regression: SpringHandlerInstantiator breaks stand-alone support in the MVC Test framework [SPR-13375] #17957
  • ScopedProxyMode resolution for custom scope meta-annotation not working with @Bean methods (with ASM-based scanning) [SPR-13394] #17974
  • StompDecoder fails for partial headers containing escape sequence [SPR-13416] #17995
  • ConcurrentModificationException in SingleConnectionFactory$AggregatedExceptionListener [SPR-13421] #18000
  • MessagingException should not provide empty description String to NestedRuntimeException [SPR-13447] #18027
  • DeferredResult not thread-safe for isSetOrExpired call [SPR-13451] #18031
  • ConcurrentMapCache.putIfAbsent doesn't support null values [SPR-13458] #18038
  • AbstractEmbeddedDatabaseConfigurer.shutdown does not close JDBC resources [SPR-13474] #18053
  • YamlProcessor subclasses can no longer instantiate StrictMapAppenderConstructor [SPR-13504] #18082
  • Null Pointer when receiving an invalid transport type during SockJS request [SPR-13545] #18121
  • Consistently detect spring-beans.dtd reference [SPR-13549] #18125
  • JCacheCache doesn't recognize null values in other JVMs [SPR-13553] #18129
  • DefaultSubscriptionRegistry loses track of subscribers in its cache [SPR-13555] #18131
  • Close processing triggered by shutdown hook isn't thread safe [SPR-13556] #18132
  • Clarify whether HttpInputMessage.getBody() is allowed to return null [SPR-13563] #18139
  • NullPointerException in DefaultSubscriptionRegistry.removeSubscription [SPR-13205] #17797
  • Wrong assertion message in ShallowEtagHeaderFilter [SPR-13194] #17786
  • STOMP CONNECT ignored ("No session for...") when using websocket:decorator-factories [SPR-13190] #17782
  • ConcurrentModificationException when calling SimpMessagingTemplate.convertAndSend [SPR-13185] #17777

📔 Documentation

  • Misleading note on readonly and disabled flags in spring-form.tld [SPR-13397] #17977
  • Documentation for Portlet MVC does not refer to Portlet 2.0 spec (JSR-286) [SPR-13513] #18090
  • Dispel the myth that Spring MVC Test only works with JUnit [SPR-13552] #18128

3.2.15 Release

17 Jan 15:44
Compare
Choose a tag to compare

⭐ New Features

  • Avoid ambiguous property warning for setter methods with multiple parameters [SPR-13349] #17933
  • Protect against RFD exploits [SPR-13548] #18124

🪲 Bug Fixes

  • ConcurrentModificationException when doing a merge on AbstractEnvironment [SPR-13213] #17805
  • DeferredResult not thread-safe for isSetOrExpired call [SPR-13451] #18031
  • AbstractEmbeddedDatabaseConfigurer.shutdown does not close JDBC resources [SPR-13474] #18053
  • JCacheCache doesn't recognize null values in other JVMs [SPR-13553] #18129
  • Clarify whether HttpInputMessage.getBody() is allowed to return null [SPR-13563] #18139

📔 Documentation

  • Misleading note on readonly and disabled flags in spring-form.tld [SPR-13397] #17977
  • Documentation for Portlet MVC does not refer to Portlet 2.0 spec (JSR-286) [SPR-13513] #18090

4.2.1 Release

17 Jan 14:32
Compare
Choose a tag to compare

⭐ New Features

  • AsyncRestTemplate should wrap RuntimeExceptions in ExecutionException [SPR-13413] #17992
  • DefaultDeserializer should use ConfigurableObjectInputStream [SPR-13409] #17988
  • Support transitive implicit attribute aliases with @AliasFor [SPR-13405] #17985
  • SimpleAliasRegistry should detect circles between non-canonical aliases as well [SPR-13390] #17971
  • Method lookup doesn't allow for overriding definitions in parent bean [SPR-13388] #17969
  • VersionResourceResolver should add ETag headers when resolving resources [SPR-13382] #17963
  • Support CALL Statement for SAP HANA [SPR-13381] #17962
  • Quote if necessary Etags set with ResponseEntity builder API [SPR-13378] #17960
  • Introduce hook for creating a custom BeanPropertyBindingResult in DataBinder [SPR-13373] #17955
  • Log connection URL for embedded databases [SPR-13370] #17954
  • Add 'preparer-factory' attribute to mvc:tiles-configurer/ [SPR-13363] #17947
  • Add Jdk7Module to Jackson2ObjectMapperBuilder's well known modules [SPR-13354] #17938
  • Introduce JsonPath matchers for empty and non-empty content [SPR-13352] #17936
  • Avoid ambiguous property warning for setter methods with multiple parameters [SPR-13349] #17933
  • Revisit RedirectView's use of getCurrentWebApplicationContext() [SPR-13346] #17930
  • Support implicit attribute aliases with @AliasFor [SPR-13345] #17929
  • Introduce SmartMessageConverter interface with conversionHint arguments [SPR-13343] #17927
  • StompSubProtocolHandler should send SessionSubscribeEvent after ChannelSecurityInterceptor has validated access rights [SPR-13339] #17924
  • Provide a SpringConstraintValidatorFactory variant for use with validation.xml [SPR-13327] #17912
  • BeanPropertyRowMapper should log if mapRow doesn't find a PropertyDescriptor [SPR-13323] #17908
  • Introduce additional JsonPath matchers in Spring MVC Test [SPR-13320] #17905
  • File upload with Servlet 3 multipart requests should support filename with charset encoding (RFC 2231) [SPR-13319] #17904
  • Deprecate JdkVersion (for optimistic compatibility with newer JDK generations) [SPR-13312] #17897
  • UriComponents should support URI variables that contain a regex [SPR-13311] #17896
  • HibernateJpaDialect should warn about connection release mode other than ON_CLOSE (when upgrading from 4.0.x) [SPR-13269] #17860
  • Support for JSR-356 WebSockets on WebSphere Liberty Profile [SPR-12367] #16973

🪲 Bug Fixes

  • MethodValidationPostProcessor fails for certain generic method signatures when running against Hibernate Validator 5 [SPR-12237] #22186
  • Spring response handler returning abstract object drops unique fields from concrete class [SPR-13429] #18008
  • Regression: BeanWrapperImpl.getPropertyDescriptor does not allow nested paths [SPR-13403] #17983
  • ServletWebRequest.checkNotModified attempts to call HttpServletResponse.getStatus() on Servlet 2.5 [SPR-13396] #17976
  • ScopedProxyMode resolution for custom scope meta-annotation not working with @Bean methods (with ASM-based scanning) [SPR-13394] #17974
  • MessageHeaders mutable through Map.Entry.setValue() [SPR-13385] #17966
  • Cannot set a Content-Type using ScriptTemplateView [SPR-13379] #17961
  • Regression: SpringHandlerInstantiator breaks stand-alone support in the MVC Test framework [SPR-13375] #17957
  • ResourceUrlProvider should only consider paths and not request parameters [SPR-13374] #17956
  • JsonPath assertions fail to differentiate between definite and indefinite results in checks for existence [SPR-13351] #17935
  • Default value of CommonsPool2TargetSource#maxWait is incorrect [SPR-13350] #17934
  • ResponseBodyEmitter doesn't get headers written immediately [SPR-13341] #17925
  • AnnotationUtils fails to synthesize nested maps into annotations [SPR-13338] #17923
  • AnnotationUtils fails to throw exception if meta-annotation is not present [SPR-13335] #17921
  • Race condition when inbound message handling fails and StompSubProtocolHandler sends ERROR frame [SPR-13326] #17911
  • @AliasFor potentially overrides attribute in wrong meta-annotation [SPR-13325] #17910
  • SocketUtils does not properly detect available port on localhost [SPR-13321] #17906
  • Jackson 2.6: message converter should use type only for collections [SPR-13318] #17903
  • Multipart request tests fail when enabling spring security [SPR-13317] #17902
  • MockHttpServletRequest returns empty cookies array instead of null if instance is built using MockHttpServletRequestBuilder [SPR-13314] #17899
  • AllEncompassingFormHttpMessageConverter prioritizes Jackson 2 XML over JSON [SPR-13309] #17894
  • Regression: PropertiesFactoryBean values do not get converted to target type without ConversionService [SPR-13256] #17847

📔 Documentation

  • Add a section about HttpMessageConverter customization in the reference documentation [SPR-13411] #17990
  • Misleading note on readonly and disabled flags in spring-form.tld [SPR-13397] #17977
  • [doc] Document use of @Transactional on controller via @MessageMapping [SPR-13384] #17965
  • [doc] Update Javadoc on RestTemplate/AsyncRestTemplate to highlight supported HTTP client libraries [SPR-13313] #17898
  • Document selenium-htmlunit-driver dependency [SPR-13299] #17889

4.2 GA Release

17 Jan 14:32
Compare
Choose a tag to compare

⭐ New Features

  • ResourceBundleMessageSource performance optimization for getStringOrNull [SPR-13295] #17885
  • Unable to override RequestMappingHandlerAdapter#createRequestMappingMethod [SPR-13293] #17883
  • Introduce 'value' alias for 'attribute' in @AliasFor [SPR-13289] #17879
  • RequestMapping: case insensitive path matching [SPR-13286] #17876
  • Support @Rollback at the class level [SPR-13276] #17867
  • DispatcherServlet: enable applyDefaultViewName to access multipart request parameters [SPR-13272] #17863
  • @MessageMapping with placeholders [SPR-13271] #17862
  • InvocableHandlerMethod.getMethodArgumentValues() failure should lead to warn-level logging by default [SPR-13267] #17858
  • Jackson @JsonView deserialization support for @MessageMapping payloads [SPR-13265] #17856
  • Add a new ResultMatcher for date formats in HTTP headers [SPR-13263] #17854
  • RFC 3986: UriComponentsBuilder.fromUriString should support empty URIs [SPR-13257] #17848
  • SockJS client does not use HttpHeaders passed by WebSocketConnectionManager for ServerInfo request [SPR-13254] #17845
  • AsyncAnnotationBeanPostProcessor could find TaskExecutor by type/name [SPR-13248] #17839
  • Make AbstractFallbackTransactionAttributeSource.computeTransactionAttribute(…) protected [SPR-13246] #17837
  • Inconsistent JPA behavior using no transaction, propagation SUPPORTS and OpenEntityManager pattern [SPR-13243] #17834
  • Transaction propagation SUPPORTS leads to “HHH000326: Cannot join transaction” warning [SPR-13242] #17833
  • AllEncompassingFormHttpMessageConverter does not prefer Jackson2 over JAXB for XML marshalling [SPR-13240] #17831
  • ScheduledAnnotationBeanPostProcessor should fall back to default TaskScheduler by name [SPR-13236] #17827
  • Add MockMvc HtmlUnit Integration [SPR-13158] #17749
  • Introduce @Commit alias for @Rollback(false) [SPR-13279] #17372
  • MockHttpServletResponse.setDateHeader does not perform date formatting [SPR-11912] #16531

🪲 Bug Fixes

  • onCompletion SseEmitter callback never gets called [SPR-13292] #17882
  • Regression in 4.2: NPE due to WebJarsResourceResolver [SPR-13291] #17881
  • MockMvc.perform with the TestContext framework causes additional perform invocations to be "polluted" [SPR-13260] #17851
  • Reset Pragma header in WebContentGenerator when caching resources [SPR-13252] #17843
  • PropertyOrFieldReference throws ClassCastException [SPR-13247] #17838
  • PathResourceResolver should not resolve "/" as a JAR resource [SPR-13241] #17832
  • Regression: AnnotationScopeMetadataResolver fails to resolve VaadinView [SPR-13239] #17830
  • Regression in ResponseStatusExceptionResolver: setStatus versus sendError [SPR-13226] #17817

📔 Documentation

  • Doc: Autowiring in @Configuration classes with post-processor definitions [SPR-13285] #17875
  • Document changes about HTTP cache header defaults in migration docs [SPR-13253] #17844
  • AOP section referencs outdated resources [SPR-13238] #17829
  • Document SpringClassRule and SpringMethodRule in the reference manual [SPR-13037] #17629
  • Document AopTestUtils in the reference manual [SPR-13006] #17598
  • Document support for generating unique names for embedded databases in the reference manual [SPR-12839] #17437

4.2 RC3 Release

17 Jan 14:32
Compare
Choose a tag to compare

⭐ New Features

  • Allow Collection Selection/Projection to be applied to instances of Iterable [SPR-13231] #17822
  • SimpleClientHttpRequestFactory: headers with null values should be sent as empty Strings [SPR-13225] #17816
  • Allow customizing DispatcherServlet in AbstractDispatcherServletInitializer [SPR-13222] #17813
  • JaxbMarshaller scan should skip annotated interfaces [SPR-13221] #17812
  • JdbcTemplate.queryForObject(sql, .class) produces TypeMismatchDataAccessException [SPR-13220] #17811
  • Support single quotes nested in double quotes in SQL scripts [SPR-13218] #17809
  • BeanPropertyRowMapper should always call toLowerCase with US encoding [SPR-13216] #17807
  • As of Jackson 2.6 the module class supporting the java.time (java8) package has changed [SPR-13212] #17804
  • TomcatInstrumentableClassLoader should support Tomcat 7.0.63+ as well [SPR-13210] #17802
  • ResourceBundleThemeSource could expose the property fallbackToSystemLocale of ResourceBundleMessageSource [SPR-13209] #17801
  • Make RedirectViews use RESPONSE_STATUS_ATTRIBUTE as a response status if defined [SPR-13208] #17800
  • Avoid rejecting same origin requests detected as CORS requests [SPR-13206] #17798
  • LinkedMultiValueMap should allow for deep copy of List values [SPR-13201] #17793
  • CommonsMultipartResolver should support setFileSizeMax [SPR-13200] #17792
  • Support HandlerMethod parameter in @MessageExceptionHandler [SPR-13196] #17788
  • Add an Access-Control-Request-Method check for CORS preflight requests [SPR-13193] #17785
  • Add a CORS Filter [SPR-13192] #17784
  • DelegatingFilterProxy should be aware of FrameworkServlet's WebApplicationContext [SPR-13191] #17783
  • Unresolvable class in 'basePackageClasses' annotation attribute results in misleading and hard to diagnose error [SPR-13177] #17769
  • Add @EventListener value() support for event class literals [SPR-13156] #17747
  • ScriptTemplateView configuration option for JavaScript concurrency issues [SPR-13034] #17626
  • Reduce BeanDefinition cloning in AbstractBeanFactory.getMergedBeanDefinition [SPR-12236] #16851
  • MultipartFile interface should extend InputStreamSource [SPR-11861] #16480

🪲 Bug Fixes

  • SseEmitter is not thread safe [SPR-13224] #17815
  • ResponseBodyEmitter skips same messages during initialization [SPR-13223] #17814
  • Populate RequestAttributes before invoking FilterChain in MockMvc [SPR-13217] #17808
  • WebContentGenerator not backwards compatible [SPR-13207] #17799
  • NullPointerException possible in DefaultSubscriptionRegistry [SPR-13204] #17796
  • BEFORE_* modes in @DirtiesContext cause context to be closed before test [SPR-13180] #17772
  • Binary data in POST multipart request is unmarshalled incorrectly [SPR-13096] #17687

📔 Documentation

  • Improve documentation on limitations of Spring MVC Test [SPR-13169] #17760
  • Improve DispatcherServlet diagrams [SPR-13120] #17711
  • Improve Documentation about when use BindingAwareModelMap and ExtendedModelMap [SPR-12896] #17495
  • Document @Bean definitions via default methods [SPR-12882] #17480
  • Improve Reference Documentation about Spring WebSocket [SPR-12579] #17180
  • Document method visibility rules for @Bean methods [SPR-12345] #16950
  • Document autowiring of javax.validation.Validator with use of @EnableWebMvc [SPR-12194] #16808
  • Improve documentation for @IfProfileValue precedence [SPR-11902] #16521
  • Documentation should mention @Primary [SPR-7301] #11960

4.2 RC2 Release

17 Jan 14:32
Compare
Choose a tag to compare

⭐ New Features

  • Avoid reading (empty) RequestBody for HTTP methods that aren't expected to have a body [SPR-13176] #17768
  • Introduce logging support for MvcResult details in the Spring MVC Test framework [SPR-13171] #17762
  • Print cookies in human-readable form in Spring MVC Test [SPR-13168] #17759
  • Allow MVC handler methods to return any CharSequence type as view name [SPR-13165] #17756
  • Support inlined statements in @Sql in the TestContext framework [SPR-13159] #17750
  • Allow multiple destination per @JmsListener [SPR-13147] #17738
  • Add an easy way to configure custom StompSubProtocolErrorHandler for StompSubProtocolHandler. [SPR-13142] #17733
  • Support for Jetty 9.3 [SPR-13140] #17731
  • Status 406 "Not Accepted" is not appropriate when no message converter can handle return type [SPR-13135] #17726
  • Allow body of JmsListener annotated method to define returned Message Destination [SPR-13133] #17724
  • Support CompletableFuture<> as return type of @Async methods [SPR-13128] #17719
  • HttpComponentsAsyncClientHttpRequestFactory overrides default request config of httpclient [SPR-13125] #17716
  • 400 Bad Request for missing URI template variable is incorrect [SPR-13121] #17712
  • Introduce general purpose isEmpty() method in ObjectUtils [SPR-13119] #17710
  • Add request timeout to ResponseBodyEmitter [SPR-13104] #17695
  • Improve circular import exception, in particular for @Import vs import through nesting [SPR-13101] #17692
  • Spring does not log deserialization / marshalling errors to the console [SPR-13100] #17691
  • Prevent class/classloader retention in GenericConversionService [SPR-13099] #17690
  • Reduce memory consumption for caches [SPR-13093] #17684
  • Allow annotation to be synthesized from a map with minimal attributes [SPR-13087] #17678
  • Transaction Scope [SPR-13085] #17676
  • Custom async HandlerMethodReturnValueHandler should work with @ResponseBody [SPR-13083] #17674
  • Introduce synthesized annotation alternative to getAnnotationAttributes() in AnnotatedElementUtils [SPR-13082] #17673
  • Performing an asyncDispatch with MockMvc fails if DeferredResult is not yet set [SPR-13079] #17670
  • AsyncResult implementation does not allow for throwing ExecutionException [SPR-13076] #17668
  • Support retrieval of nested annotations in AnnotationAttributes [SPR-13074] #17666
  • Document public API in AnnotationAttributes [SPR-13072] #17664
  • Improve generics matching of ApplicationEvent subtypes with generic payload parameter [SPR-13069] #17661
  • Introduce support for synthesizing AnnotationAttributes into an annotation [SPR-13067] #17659
  • CORS global configuration support in XML namespace [SPR-13046] #17638
  • Base64 support option without Commons Codec dependency on Java 6/7 [SPR-12938] #17531
  • Make @ResponseBody method return type available to message converters [SPR-12811] #17408
  • Maintain original ordering of active profiles in the TestContext framework [SPR-12492] #17098
  • UriComponentsBuilder#fromHttpRequest should consider RFC-7239 Forwarded headers [SPR-11856] #16475
  • Introduce a comprehensive programming model for meta-annotation support [SPR-11511] #16136
  • Introduce aliases for 'value' annotation attributes [SPR-11393] #16020

🪲 Bug Fixes

  • Type aware canWrite() method should be called for GenericHttpMessageConverter [SPR-13161] #17752
  • MimeType must use case insensitive comparisons for Charsets [SPR-13157] #17748
  • Stomp version 1.1 and 1.2 allows headers with empty values [SPR-13111] #17702
  • Fix combining class and method level @CrossOrigin attributes [SPR-13097] #17688
  • CGLIB code generation failure for cross-@Bean FactoryBean call [SPR-13095] #17686
  • ServletWebRequest.checkNotModified(…) writes Last-Modified header in invalid format [SPR-13090] #17681
  • AnnotationUtils.getRepeatableAnnotation() swallows AnnotationConfigurationException [SPR-13084] #17675
  • Server Sent Events use "event" as the type prefix [SPR-13080] #17671
  • Nested arrays of annotations are synthesized with wrong component type [SPR-13077] #17669
  • AnnotationUtils breaks contract for @Repeatable annotations [SPR-13068] #17660
  • XpathResultMatchers ignores character encoding of XML document [SPR-12676] #17275

📔 Documentation

  • Documentation definition for ConditionalGenericConverter not the same as the source definition [SPR-13071] #17663
  • Add description of Closeable and AutoCloseable in reference document [SPR-13041] #17633
  • Update links to new Castor website [SPR-12991] #17583

4.1.7 Release

17 Jan 14:33
Compare
Choose a tag to compare

⭐ New Features

  • Avoid reflection for creating StandardServletAsyncWebRequest [SPR-13112] #17703
  • Provide means to opt out of default annotation based transaction management by bean [SPR-13109] #17700
  • Make PropertyMatches public [SPR-13054] #17646
  • mvc:resources does not handles directories well [SPR-12999] #17591
  • Same Origin check in both AbstractSockJSService and OriginHandshakeInterceptor is not working with Tyrus client [SPR-12956] #17548
  • MethodJmsListenerEndpoint does not set the DestinationResolver on the MessagingMessageListenerAdapter [SPR-12927] #17520
  • Use higher log level in InvocableHandlerMethod.getMethodArgumentValues() [SPR-12925] #17518
  • Spring logs FactoryBean type check warning in case of factory method with arguments [SPR-12900] #17499
  • AnnotatedElementUtils should leniently ignore TypeNotPresentExceptions (just like AnnotationUtils) [SPR-12889] #17487
  • Support package private annotations with AnnotationUtils [SPR-12858] #17456
  • @Aspect aspect not correctly applied to Java 8 lambda-defined @Beans [SPR-11807] #16427

🪲 Bug Fixes

  • YAML Processor leaves StreamDecoder open [SPR-13173] #17765
  • GzipResourceResolver has NullPointerException when used with VersionResourceResolver [SPR-13149] #17740
  • AntPathMatcher throws StringIndexOutOfBoundsException [SPR-13139] #17730
  • XML input vulnerability based on DTD declaration [SPR-13136] #17727
  • ObjenesisCglibAopProxy's fallback mode triggers duplicate class definition error [SPR-13131] #17722
  • FileNotFoundException when implementing a nested interface with groovy closure in a @Component [SPR-13115] #17706
  • When use a @args as pointcut, there is case that occur a NPE at calling the unrelated method [SPR-13102] #17693
  • Configuration class parsing may trigger NoClassDefFoundError for nested classes [SPR-13091] #17682
  • H4 SpringSessionSynchronization#beforeCompletion leaves irreparably broken state if exception thrown in session.disconnect() [SPR-13089] #17680
  • Wrong IllegalStateException for @Cacheable without a cache name [SPR-13081] #17672
  • DefaultMockMvcBuilder combined with @ContextHierarchy registers wrong context as ROOT [SPR-13075] #17667
  • ByteBuffer corrupted by ByteBufferConverter when passed through Spring [SPR-13056] #17648
  • Remoting over JMS with receiveTimeout blocks service forever [SPR-13052] #17644
  • NPE in PropertyOrFieldReference due to concurrency issue when caching SpelExpression objects [SPR-13023] #17614
  • Validation of frame content in org.springframework.web.socket.sockjs.frame.SockJsFrame is a NoOp [SPR-13019] #17610
  • StringIndexOutOfBoundsException in ResourceUrlEncodingFilter [SPR-13018] #17609
  • NPE for alias resolved to null in SimpleAliasRegistry [SPR-13016] #17607
  • Commons FileUpload failed after Spring framework upgrade [SPR-13014] #17605
  • CustomBooleanEditor may run into NPE when configured with allowEmpty=false [SPR-13010] #17601
  • ContentCachingResponseWrapper should NOT sendError() before write body [SPR-13004] #17596
  • RequestMapping maps root-controller handler methods with double slashes [SPR-12975] #17566
  • PatternMatchUtils infinite loop bug [SPR-12971] #17563
  • Regression: DLL handled as classpath resource [SPR-12928] #17521
  • ResponseEntity's #equals fails symmetric property. [SPR-12910] #17509
  • Async Execution Aspect compiler error when using ListenableFuture [SPR-12895] #17494
  • CachingResourceResolver + GzipResourceResolver caches different results depending on what is requested first [SPR-12892] #17491
  • Regression in handling of String passed as Types.OTHER to JdbcTemplate [SPR-12890] #17488
  • client-library-url in sockjs config is not working [SPR-12874] #17472
  • CronSequenceGenerator constructor goes into infinite loop with invalid increments [SPR-12871] #17469
  • Incorrect value in InvalidPropertyException message from BeanWrapperImpl.setPropertyValue [SPR-12866] #17464
  • Netty4ClientHttpRequest ignores query parameters [SPR-12779] #17377

📔 Documentation

  • A wrong description of CGLIB proxying in reference document ? [SPR-13103] #17694
  • Sample code of "Jackson JSON Views support" is wrong ? [SPR-12994] #17586

3.2.14 Release

17 Jan 15:44
Compare
Choose a tag to compare

🪲 Bug Fixes

  • @Scheduled no longer works in case of multiple proxied target classes implementing the same interface [SPR-12709] #17306
  • ServletUriComponentsBuilder#initFromRequest can cause NPE [SPR-12723] #17320
  • Deadlock publishing event while creating listener bean [SPR-12739] #17336
  • Specified MVC resource at root level not considered "under location" [SPR-12747] #17344
  • EncodedResource does not include charset in equals() implementation [SPR-12767] #17364
  • StandardMultipartHttpServletRequest.StandardMultipartFile not serializable [SPR-12795] #17392
  • Incorrect value in InvalidPropertyException message from BeanWrapperImpl.setPropertyValue [SPR-12866] #17464
  • CronSequenceGenerator constructor goes into infinite loop with invalid increments [SPR-12871] #17469
  • PatternMatchUtils infinite loop bug [SPR-12971] #17563
  • CustomBooleanEditor may run into NPE when configured with allowEmpty=false [SPR-13010] #17601
  • NPE for alias resolved to null in SimpleAliasRegistry [SPR-13016] #17607
  • Remoting over JMS with receiveTimeout blocks service forever [SPR-13052] #17644
  • When use a @args as pointcut, there is case that occur a NPE at calling the unrelated method [SPR-13102] #17693
  • XML input vulnerability based on DTD declaration [SPR-13136] #17727
  • SpEL chooses wrong method to invoke when varargs method is present [SPR-12803] #17400

📔 Documentation

  • Documentation error in "SimpleJdbcInsert" section [SPR-12639] #17240
  • Consider rewording ack modes on the listener container javadocs [SPR-12705] #17302