Skip to content

Releases: spring-projects/spring-framework

4.0.7 Release

17 Jan 14:33

Choose a tag to compare

⭐ New Features

  • Performance issue on ResolvableType cache [SPR-12122] #16738
  • Cache.get(Object key, Class type) should be more explicit about what to do in case of a type mismatch [SPR-12145] #16759
  • BeanNameViewResolver should not try to use non-View beans [SPR-12079] #16695
  • AbstractTypeHierarchyTraversingFilter should be more lenient when loading types [SPR-12042] #16658
  • ConcurrentMapCacheManager has interdependent setters [SPR-12026] #16642
  • RestTemplate with InputStreamResource does not work if Content-Length is not set [SPR-12017] #16633
  • Exceptions thrown during AbstractApplicationContext.refresh() not being logged right when they are caught [SPR-12010] #16626
  • XmlBeanDefinitionReader runs 10x slower due to resetBeanDefinition check [SPR-8318] #12966

🪲 Bug Fixes

  • Injecting EXTENDED @PersistenceContext into JUnit 4 test class causes NoSuchBeanDefinitionException [SPR-8834] #13476
  • getBean(Object.class) fails when introspecting Environment bean [SPR-10542] #15172
  • ShallowEtagHeaderFilter doesn't support Servlet 3.1 setContentLengthLong [SPR-12097] #16713
  • ServerEndpointExporter causes application context refresh to fail with an NPE when used in a Spring Boot app [SPR-12109] #16725
  • MockMvc security filters causes FileUploadException: the request was rejected because no multipart boundary was found [SPR-12114] #16730
  • GuavaCacheManager ignores cache specification due to eager initialization of internal cache map with static cache names [SPR-12120] #16736
  • Plain FactoryBean declaration on @Bean method leads to early call (pre injection) [SPR-12141] #16755
  • CachingConnectionFactory should catch exceptions on logical close [SPR-12148] #16762
  • Tiles 3 TilesViewResolver should allow for custom TilesView subclasses [SPR-12075] #16691
  • includeFilters and excludeFilters of @ComponentScan cause failures when used in meta-annotations [SPR-12065] #16681
  • Spring may invoke @Bean methods too early in case of a circular reference [SPR-12018] #16634
  • AbstractMessageListenerContainer#doExecuteListener can cause a dropped message if using CLIENT_ACKNOWLEDGE and the container is stopped and subsequently started again. [SPR-12015] #16631
  • Non-stable BeanCurrentlyInCreationException with wrong Java config [SPR-12004] #16620
  • Changes to AbstractApplicationEventMulticaster in 3.2.9 break HttpSessionEventPublisher in Google AppEngine Runtime [SPR-12002] #16618
  • NPE in SelectedValueComparator with null bound value [SPR-12001] #16617
  • StaxStreamXMLReader ignores significant whitespace [SPR-12000] #16616
  • UriComponentsBuilder.fromUriString may not parse correctly when there is no path [SPR-11970] #16586
  • Exception during context refresh swallowed by subsequent LifecycleProcessor exception handling [SPR-10000] #14634

📔 Documentation

  • Incorrect documentation for AbstractAnnotationConfigDispatcherServletInitializer.getServletConfigClasses() [SPR-12028] #16644
  • Documentation typo [SPR-12020] #16636
  • user destinations docs are missing the brokerPrefix [SPR-11992] #16608
  • Remove outdated IDE, JIRA and Tomcat references [SPR-7521] #12179

3.2.11 Release

17 Jan 15:44

Choose a tag to compare

⭐ New Features

  • XmlBeanDefinitionReader runs 10x slower due to resetBeanDefinition check [SPR-8318] #12966
  • Exceptions thrown during AbstractApplicationContext.refresh() not being logged right when they are caught [SPR-12010] #16626
  • RestTemplate with InputStreamResource does not work if Content-Length is not set [SPR-12017] #16633

🪲 Bug Fixes

  • Injecting EXTENDED @PersistenceContext into JUnit 4 test class causes NoSuchBeanDefinitionException [SPR-8834] #13476
  • Exception during context refresh swallowed by subsequent LifecycleProcessor exception handling [SPR-10000] #14634
  • getBean(Object.class) fails when introspecting Environment bean [SPR-10542] #15172
  • UriComponentsBuilder.fromUriString may not parse correctly when there is no path [SPR-11970] #16586
  • StaxStreamXMLReader ignores significant whitespace [SPR-12000] #16616
  • NPE in SelectedValueComparator with null bound value [SPR-12001] #16617
  • Changes to AbstractApplicationEventMulticaster in 3.2.9 break HttpSessionEventPublisher in Google AppEngine Runtime [SPR-12002] #16618
  • AbstractMessageListenerContainer#doExecuteListener can cause a dropped message if using CLIENT_ACKNOWLEDGE and the container is stopped and subsequently started again. [SPR-12015] #16631
  • Tiles 3 TilesViewResolver should allow for custom TilesView subclasses [SPR-12075] #16691
  • MockMvc security filters causes FileUploadException: the request was rejected because no multipart boundary was found [SPR-12114] #16730
  • Plain FactoryBean declaration on @Bean method leads to early call (pre injection) [SPR-12141] #16755
  • CachingConnectionFactory should catch exceptions on logical close [SPR-12148] #16762

4.1 RC2 Release

17 Jan 14:33

Choose a tag to compare

⭐ New Features

  • Improve Reference Documentation about Spring JMS (infrastructure) [SPR-12073] #16689
  • Make @Payload as ElementType.METHOD too [SPR-12071] #16687
  • Consider adding static notFound() builder method to ResponseEntity [SPR-12070] #16686
  • JmsMessagingExceptionTranslator package tangle [SPR-12064] #16680
  • Add more HttpHeaders constants for standard HTTP headers [SPR-12063] #16679
  • Improve exception message: Default SmartContextLoaders do not support locations and @Configuration classes simultaneously [SPR-12060] #16676
  • Shortcut method for building HEAD requests with MockMvcRequestBuilders [SPR-12055] #16671
  • Introduce @TestPropertySource support in the TestContext framework [SPR-12051] #16667
  • String to Enum Interface conversion not working [SPR-12050] #16666
  • Missing custom entity type filter in LocalSessionFactoryBean [SPR-12049] #16665
  • Improve comment in RuntimeTestWalker [SPR-12044] #16660
  • Document that MockHttpServletRequest does not comply with Servlet spec regarding Accept-Language header [SPR-12043] #16659
  • SpEL Compiler: Make OpModulus compilable [SPR-12041] #16657
  • JmsListener/ScheduledAnnotationBeanPostProcessor should use SmartInitializingSingleton instead of ContextRefreshedEvent [SPR-12039] #16655
  • JmsMessagingTemplate should not throw JmsException directly [SPR-12038] #16654
  • Update JmsMessagingTemplate to support MessageRequestReplyOperations [SPR-12037] #16653
  • Enhance ResourceHandlerRegistration API for resource transformers/resolvers [SPR-11982] #16598
  • Isolation support for JPA with Hibernate EntityManager 4 [SPR-11942] #16559
  • Provide initial support for Undertow 1.1 [SPR-11914] #16533
  • Support Jackson2 based XML serialization/deserialization [SPR-11785] #16407
  • @Configuration imported via @ImportResource is not processed [SPR-11723] #16345
  • Introduce mechanism for automatic discovery of default TestExecutionListeners [SPR-11466] #16092
  • @Configuration imported via ImportBeanDefinitionRegistrar is not processed as configuration [SPR-11430] #16056
  • Support for JSR-356 on WebLogic 12.1.3 [SPR-11293] #15917
  • BeanFactory lacks method for getting bean by type with specified constructor arguments [SPR-11235] #15860
  • Support Groovy scripts for bean definitions in the TestContext framework [SPR-11233] #15858
  • Compatibility with GlassFish 4.1 and Tyrus 1.8 (WebSocket 1.1) [SPR-11094] #15720
  • @ComponentScan does not allow for registering beans with lazy initialization [SPR-10459] #15092
  • Spel Implicit Map [SPR-9472] #14107
  • Hibernate4 version of SpringSessionContext.currentSession() does not create a session if TransactionSynchronizationManager does not contain one [SPR-9020] #13659
  • readOnly transaction doesn't work with JPA and Hibernate 4 [SPR-8959] #13599
  • Introduce mechanism for registering default TELs if a custom TEL is registered via @TestExecutionListeners [SPR-8854] #13496
  • UrlBasedViewResolver should implement setExposedContextBeanNames (not InternalResourceViewResolver) [SPR-8064] #12719
  • Passing lookup-method arguments to created bean constructor [SPR-7431] #12089
  • Spring REST @MVC: Add support for google Protocol Buffers resource representation format [SPR-5807] #10477
  • @LookupMethod annotation for use with component scanning [SPR-5192] #9865
  • Binding in Velocity templates using EL accessors ([, ]) for collections produces non xhtml strict compliant output [SPR-5172] #9845
  • HibernateJpaDialect does not support setting a specific isolation level per transaction [SPR-5012] #9687
  • How to implement Pessimistic Locking with JPA [SPR-3812] #8492
  • Implement synchronous request / response logic in JmsTemplate [SPR-3332] #8017

🪲 Bug Fixes

  • SpEL Compiler: NPE on Indexer compilation, when is used map accessor [SPR-12045] #16661
  • SpEL Compiler produces incompatible code with method generic returns [SPR-12040] #16656
  • SockJsClient doesn't propagate "subProtocols" and "extensions" to the handshake request [SPR-12030] #16646
  • NPE in DefaultListableBeanFactory#getPriority [SPR-12024] #16640
  • Restore method signature for ViewControllerRegistration.setViewName [SPR-12016] #16632
  • NPE in Elvis Expression (ExitTypeDescriptor null) [SPR-12014] #16630
  • ThymeleafViewResolver not used by Spring 4.1 resulting in "circular view path" error [SPR-12013] #16629
  • Spring 4.1 schema issues [SPR-12011] #16627

📔 Documentation

  • Update references to RFC 2616 [SPR-12067] #16683
  • Improve documentation for using "." vs "/" as separators with STOMP/WebSocket messaging [SPR-12007] #16623
  • Add documentation for Java SockJS client [SPR-12006] #16622
  • Enrich Spring reference documentation (Websocket Support section) with details on how to filter messages [SPR-11952] #16568
  • No messaging module overview in the 2.2. Modules section [SPR-11847] #16466
  • Document how to use custom @Cacheable annotation with AspectJ [SPR-11503] #16128
  • Create an epub version of the Spring framework reference [SPR-11167] #15793
  • Doc: Spring MVC and the most 'specific' @RequestMapping URL pattern [SPR-10576] #15205
  • Explicitly mention proper URL-escaping in RestTemplate, UriTemplate, and UriComponents API Javadoc [SPR-10497] #15130
  • Documentation does not explain how @Cacheable and @CacheEvict behave in a multi-threaded environment [SPR-9588] #14222
  • [doc] CSRF prevention support in spring form controller [SPR-6125] #10793

4.1 RC1 Release

17 Jan 14:33

Choose a tag to compare

⭐ New Features

  • AnnotationUtils should use threadsafe ConcurrentMap (contention) [SPR-12878] #17476
  • Customize concurrency per JMS listener [SPR-11988] #16604
  • DefaultBeanDefinitionDocumentReader should ignore the 'profile' attribute for custom namespaces [SPR-11975] #16591
  • Add ability to check specific error on field within Spring MVC test framework [SPR-11971] #16587
  • Support JMS 2.0's shared consumers in message listener containers [SPR-11969] #16585
  • Add hooks in spring-messaging for Spring Security [SPR-11966] #16582
  • Add AppCacheResourceTransformer for HTML5 offline applications [SPR-11964] #16580
  • Ordering of MessageConverters in AbstractMessageBrokerConfiguration [SPR-11961] #16577
  • SQLExceptionTranslators do not reliably translate QueryTimeoutException [SPR-11959] #16575
  • Reduce PlatformTransactionManager lookups in TransactionAspectSupport [SPR-11954] #16570
  • Optimize logging at different levels with WebSocket/Messaging [SPR-11943] #16560
  • Add support for caching destination resolver [SPR-11939] #16556
  • Support for Types.NCLOB in SqlLobValue to simplify use with NamedParameterJdbcTemplate. [SPR-11938] #16555
  • Support for argument-resolvers and return-value-handlers in MVC namespace [SPR-11927] #16545
  • Seamless support for Groovy bean definitions mixed with XML bean definitions [SPR-11924] #16542
  • @Async Supporting ListenableFuture [SPR-11909] #16528
  • Introduce @SqlConfig for common SQL script configuration [SPR-11896] #16515
  • Provide lock free access to BeanFactory methods by calling BF methods on the AbstractApplicationContext instance directly [SPR-11863] #16482
  • ServletUriComponentsBuilder should consider X-Forwarded-Host [SPR-11855] #16474
  • Add HTTP status code 308 Permanent Redirect [SPR-11854] #16473
  • Add missing HandshakeInterceptor configuration to WebSocket config [SPR-11845] #16464
  • HttpInvokerProxyFactoryBean and co do not reliably expose correct type when declared via @Bean [SPR-11842] #16461
  • Support for java.util.Optional with @Inject (a la @Autowired's required=false) [SPR-11833] #16452
  • Support for java.util.Optional as a @RequestParam [SPR-11829] #16448
  • MarshallingView does not support JAXBElement value by default [SPR-11827] #16446
  • Extend MockRestServiceServer to support AsyncRestTemplate [SPR-11822] #16442
  • Make ListenableFuture lambda compliant [SPR-11820] #16440
  • MessageReceivingOperations returns 'null' if the payload cannot be converted [SPR-11817] #16437
  • Create a common interface for AnnotationConfigApplicationContext and AnnotationConfigWebApplicationContext [SPR-11814] #16434
  • Add events for subscribe/unsubscribe stomp commands [SPR-11813] #16433
  • Enhance ResourceHttpRequestHandler with ResourceTransformer strategy [SPR-11800] #16420
  • Expose current HttpServletResponse for autowiring [SPR-11795] #16416
  • Support Groovy markup templating in Spring MVC [SPR-11789] #16411
  • Support org.springframework.messaging.Message as an alternative to MessageCreator in the JMS support [SPR-11772] #16394
  • Allow configuration of path mapping options for websocket handler mapping (e.g. alwaysUseFullPath) [SPR-11771] #16393
  • Add SQL error code mapping for SAP HANA database [SPR-11770] #16392
  • @ComponentScan should get processed without @Configuration as well [SPR-11769] #16391
  • Move Spring Boot's YAML properties into the core framework. [SPR-11767] #16389
  • MockHttpServletRequest should not require setContent for non-null getInputStream() result [SPR-11764] #16386
  • Path matching options in MVC Java/XML config should apply to all handler mappings [SPR-11753] #16375
  • Provide builders for HttpEntity and ResponseEntity [SPR-11752] #16374
  • Make constants in HttpHeaders public [SPR-11749] #16371
  • Improve reconnect attemps option in DefaultMessageListenerContainer [SPR-11746] #16368
  • Expose STOMP/WebSocket monitoring info and internal stats [SPR-11739] #16361
  • Skip Java immutable objects in session when processing the accessed attributes [SPR-11738] #16360
  • Cacheable javadoc wrongly explains how cache keys are generated [SPR-11736] #16358
  • Auto-proxy creation should not consider GroovyObject as a user-specified interface [SPR-11715] #16337
  • Introduce isAnnotation() in ClassMetadata API [SPR-11711] #16333
  • Add support of @SendTo for JMS listeners [SPR-11707] #16329
  • Detect default JmsListenerContainerFactory automatically [SPR-11706] #16328
  • Add support for @RequestMapping method return values of type ListenableFuture [SPR-11695] #16317
  • Cannot add script after setting scripts in ResourceDatabasePopulator [SPR-11691] #16313
  • Assert preconditions in ResourceDatabasePopulator [SPR-11690] #16312
  • SchedulerFactoryBean should support non-durable jobs as well [SPR-11689] #16311
  • Expose Spring MVC handled exception as request attribute when no view rendering is required [SPR-11686] #16309
  • Allow use of "." as path separator in @MessageMapping methods and in simple broker [SPR-11660] #16283
  • Use javax.annotation.Priority as an alternative for @Order [SPR-11639] #16262
  • Introduce execute(DataSource) in ResourceDatabasePopulator [SPR-11629] #16252
  • Relax websocket-enabled attribute on websocket:sockjs [SPR-11624] #16247
  • CglibAopProxy needs to detect package-visible methods when defined in a different ClassLoader [SPR-11618] #16241
  • Create a synchronous SettableListenableFuture implementation [SPR-11614] #16237
  • JdbcTemplate should support JDBC 4.1 getObject(columnIndex, type) [SPR-11600] #16223
  • Support RECEIPT frame on disconnect [SPR-11599] #16222
  • Exception handling with SimpleApplicationEventMulticaster [SPR-11551] #16176
  • Add supp...
Read more

3.2.10 Release

17 Jan 15:44

Choose a tag to compare

⭐ New Features

  • Misleading exception message for using JPA with custom IsolationLevels [SPR-8325] #12974
  • Revisit class cache in CachedIntrospectionResults [SPR-11867] #16486
  • Performance regression for custom autowireBean calls with many properties [SPR-11875] #16494
  • ReflectionUtils slow down application startup on WebSphere [SPR-11882] #16501
  • Improve performance of ReflectionUtils.isCglibRenamedMethod [SPR-11894] #16513
  • Consistent declaration of private static final logger variables [SPR-11905] #16524
  • Manually registered transaction manager are not recognized by qualifiedBeanOfType [SPR-11915] #16534
  • Unclear error message on BeanPostProcessor returning null [SPR-11951] #15997

🪲 Bug Fixes

  • RequestAttributes in FrameworkPortlet [SPR-11295] #15919
  • StandardPortletEnvironment is not properly populated [SPR-11816] #16436
  • isGlobalRollbackOnly always returns 'false' with WebSphereUOWTransactionManager [SPR-11876] #16495
  • MBeanExportConfiguration.SpecificPlatform never calls afterPropertiesSet() [SPR-11877] #16496
  • URIComponentsBuilder shares state across calls of .build() [SPR-11885] #16504
  • Spring 3.2.9 breaks JBoss EAP 5.1.1 VFS compatibility [SPR-11887] #16506
  • HttpHeaders fails to return getAllow() if it was previously set to an empty collection [SPR-11917] #16536
  • Objects created by FactoryBeans might get processed multiple times by BeanPostProcessors if beans are created lazily [SPR-11937] #16554
  • Backward compatibility issue in RestTemplate's messageConverters after SPR-11351 [SPR-11962] #16578
  • Java 8: ASM5 visitors required for parsing INVOKESPECIAL/STATIC on interfaces [SPR-11979] #16595

📔 Documentation

  • Dead link to "MVC application step-by-step" guide [SPR-11935] #16552

4.0.6 Release

17 Jan 14:34

Choose a tag to compare

⭐ New Features

  • TypedValue should have proper equals(…) / hashCode() methods [SPR-11960] #16576
  • Improve logic for removing subscriptions from DefaultSubscriptionRegistry [SPR-11930] #16548
  • Shared EntityManager should immediately throw TransactionRequiredException if no transaction in progress [SPR-11923] #16541
  • Workaround for Wildfly WFLY-3474 NPE in HttpServletResponse.getHeaders [SPR-11919] #16538
  • Manually registered transaction manager are not recognized by qualifiedBeanOfType [SPR-11915] #16534
  • @Async isn't applied, if the interface doesn't have concrete implementation [SPR-11910] #16529
  • Consistent declaration of private static final logger variables [SPR-11905] #16524
  • Improve performance of ReflectionUtils.isCglibRenamedMethod [SPR-11894] #16513
  • Check inactive WebSocket/SockJS sessions before they're connected on the STOMP level [SPR-11884] #16503
  • ReflectionUtils slow down application startup on WebSphere [SPR-11882] #16501
  • Performance regression for custom autowireBean calls with many properties [SPR-11875] #16494
  • Revisit class cache in CachedIntrospectionResults [SPR-11867] #16486
  • Unloadable nested classes in @Import should not fail if associated conditions exclude them anyway [SPR-11844] #16463
  • Unclear error message on BeanPostProcessor returning null [SPR-11951] #15997
  • Misleading exception message for using JPA with custom IsolationLevels [SPR-8325] #12974

🪲 Bug Fixes

  • remove jackson dependency in AbstractHttpReceivingTransportHandler [SPR-11963] #16579
  • Backward compatibility issue in RestTemplate's messageConverters after SPR-11351 [SPR-11962] #16578
  • CachingConnectionFactory doesn't properly cache all consumers with JMS 2.0 [SPR-11956] #16572
  • CachedMessageProducer does not support all JMS 2.0 MessageProducer methods [SPR-11950] #16567
  • CachingConnectionFactory doesn't properly cache producers with JMS 2.0 [SPR-11949] #16566
  • Objects created by FactoryBeans might get processed multiple times by BeanPostProcessors if beans are created lazily [SPR-11937] #16554
  • DefaultSubscriptionRegistry does not update destination cache when subscribed twice to same destination [SPR-11931] #16549
  • Prevent accumulation of cancelled SockJS heartbeat tasks [SPR-11918] #16537
  • HttpHeaders fails to return getAllow() if it was previously set to an empty collection [SPR-11917] #16536
  • Fix session initialization concurrency issue in SockJS session implementations [SPR-11916] #16535
  • Regression: Form select tag forces "multiple" attribute even when explicitly set to false [SPR-11903] #16522
  • [TypeDescriptor] Unable to obtain nested generic from ? at level 1 [SPR-11898] #16517
  • Spring 3.2.9 breaks JBoss EAP 5.1.1 VFS compatibility [SPR-11887] #16506
  • URIComponentsBuilder shares state across calls of .build() [SPR-11885] #16504
  • MBeanExportConfiguration.SpecificPlatform never calls afterPropertiesSet() [SPR-11877] #16496
  • isGlobalRollbackOnly always returns 'false' with WebSphereUOWTransactionManager [SPR-11876] #16495
  • AnnotationUtils.findAnnotation fails with poor diagnostics if it encounters an Annotation that references an unloadable class [SPR-11874] #16493
  • Infinite loop caused by import of XML configuration that declares a ConfigurationClassPostProcessor [SPR-11858] #16477
  • Unsubscribing from an endpoint that no longer exists throws NPE [SPR-11832] #16451
  • StompSubProtocolHandler eventPublisher being cleared by SubProtocolWebSocketHandler [SPR-11825] #16444
  • StandardPortletEnvironment is not properly populated [SPR-11816] #16436
  • RequestAttributes in FrameworkPortlet [SPR-11295] #15919

📔 Documentation

  • Code snippet for many JDBC methods are showing wrong arguments. [SPR-11945] #16562
  • Latest documentation does not state "application" as scope for beans [SPR-11944] #16561
  • Dead link to "MVC application step-by-step" guide [SPR-11935] #16552
  • Bad reference to HttpClient homepage [SPR-11853] #16472

4.0.5 Release

17 Jan 14:34

Choose a tag to compare

⭐ New Features

  • Improve prefix detection in StringUtils.cleanPath [SPR-11793] #16414
  • StandardServletMultipartResolver should support lazy resolution along the lines of CommonsMultipartResolver [SPR-11730] #16352

🪲 Bug Fixes

  • StringUtils.parseLocaleString: locale variant cannot contain country code [SPR-11806] #16426
  • getTestExecutionListeners() doesn't detect NoClassDefFoundError within BeanInstantiationException [SPR-11804] #16424
  • SPR-10829: Spring JMS problem with Oracle AQ still exists if underlying DataSource is decorated [SPR-11791] #16412
  • @Conditional may prevent an import from taking effect [SPR-11788] #16410
  • JDBC findColumn gives wrong result in case of duplicate column labels [SPR-11786] #16408
  • MemorySafeUndeclaredThrowableStrategy class not found [SPR-11782] #16404
  • PropertyEditorRegistrySupport throws ExceptionInInitializerError when on endorsed classpath [SPR-11780] #16402
  • Protect against security exploits via system identifier in DTD declaration [SPR-11768] #16390
  • Regression: GenericTypeResolver returns null for partially resolvable type arguments [SPR-11763] #16385
  • IdToEntityConverter throws Access Denied exception within Spring MVC application on WebSphere 8.x [SPR-11758] #16380
  • ConcurrentModificationException in DefaultSubscriptionRegistry cache [SPR-11755] #16377
  • Servlet 3 multipart parameter binding does not work on Weblogic12c (12.1.2.0) [SPR-11074] #15700

📔 Documentation

  • Chapter 34.4 title is chopped off [SPR-11751] #16373

3.2.9 Release

17 Jan 15:45

Choose a tag to compare

⭐ New Features

  • Overriding bean definition message does not take parent definition into account [SPR-9671] #14305
  • CollectionToCollectionConverter.convert() improvement for untyped collections [SPR-11479] #16104
  • Treat empty log config refresh interval as infinite interval in Log4jWebConfigurer [SPR-11507] #16132
  • Improve exception message for failed property access in SpEL [SPR-11535] #16160
  • ResizableByteArrayOutputStream and ByteArrayOutputStream capacities [SPR-11594] #16218
  • MarshallingView should avoid temporary byte array when copying to response [SPR-11646] #16269
  • Fix/optimize handling of @Bean method override regression with return type narrowing on JDK 8 [SPR-11718] #16340
  • Metadata reading should never use ASM for java.* and javax.* types (in particular on JDK 8) [SPR-11719] #16341
  • AbstractAdvisingBeanPostProcessor.isEligible(…) does not consider proxy interfaces [SPR-11725] #16347
  • StandardServletMultipartResolver should support lazy resolution along the lines of CommonsMultipartResolver [SPR-11730] #16352
  • AbstractMarshaller should avoid SAXSource workaround when processExternalEntities=true [SPR-11737] #16359
  • Improve prefix detection in StringUtils.cleanPath [SPR-11793] #16414
  • ConfigurationClassParser.invokeAwareMethods(…) does not consider EnvironmentAware [SPR-11744] #16366
  • Basic Java 8 bytecode compatibility for Spring 3.2.x through ASM 5.0.2 [SPR-11656] #16279

🪲 Bug Fixes

  • Java config FactoryBean proxy causes class loader leak [SPR-9274] #13912
  • Unsafe fallback pointcut construction in AspectJExpressionPointcut [SPR-9335] #13973
  • Servlet 3 multipart parameter binding does not work on Weblogic12c (12.1.2.0) [SPR-11074] #15700
  • double evaluation of method arguments in SpEL [SPR-11445] #16071
  • XmlValidationModeDetector: length of a string is always greater than index of any of its characters [SPR-11477] #16102
  • SpringBeanELResolver - setValue throws PropertyNotWritableException [SPR-11502] #16127
  • Unable to retrieve FlashMap when target parameters are encoded [SPR-11504] #16129
  • Default KeyGenerator doesn't work for methods with arguments of array types [SPR-11505] #16130
  • Spring MVC Test can fail to obtain async result due to timing issue [SPR-11516] #16141
  • ConstructorResolver will generate NPE in case of no factory method found when there are explicit args [SPR-11517] #16142
  • Memory leak when using annotation based auto-wiring in child context [SPR-11520] #16145
  • Providing unique names to prototype inner beans causes excessive memory and CPU use [SPR-11545] #16170
  • BufferedImageHttpMessageConverter fails if JAI is installed [SPR-11581] #16205
  • Log Forging in DispatcherServlet via requestURI [SPR-11591] #16215
  • AbstractApplicationEventMulticaster can leak classes [SPR-11606] #16229
  • Referencing static field of class that extends Map in expression language causes class cast exception [SPR-11609] #16232
  • Servlet mocks are not reinjected into test instance between TestNG test methods [SPR-11626] #16249
  • ResourceHttpRequestHandler not closing Resource's input stream [SPR-11644] #16267
  • UrlResource.exists() does not properly detect JBoss vfszip resources [SPR-11676] #16299
  • ConcurrentReferenceHashMap doesn't limit upper concurrency level [SPR-11720] #16342
  • SpringProperties: the ClassLoader might be null, if class is loaded by the bootstrap class loader [SPR-11721] #16343
  • If-Modified-Since header is parsed as HTTP-date; but IE 10 sends length [SPR-11727] #16349
  • JRubyScriptUtils fails against JRuby 1.7.12 with NullPointerException in findClassNode [SPR-11747] #16369
  • IdToEntityConverter throws Access Denied exception within Spring MVC application on WebSphere 8.x [SPR-11758] #16380
  • Protect against security exploits via system identifier in DTD declaration [SPR-11768] #16390
  • JDBC findColumn gives wrong result in case of duplicate column labels [SPR-11786] #16408
  • SPR-10829: Spring JMS problem with Oracle AQ still exists if underlying DataSource is decorated [SPR-11791] #16412
  • getTestExecutionListeners() doesn't detect NoClassDefFoundError within BeanInstantiationException [SPR-11804] #16424
  • StringUtils.parseLocaleString: locale variant cannot contain country code [SPR-11806] #16426

4.0.4 Release

17 Jan 14:34

Choose a tag to compare

⭐ 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

📔 Documentation

  • Update documentation with example of single ApplicationContext per webapp [SPR-11703] #16325
  • [doc] Document message broker related events published [SPR-11672] #16295
  • Use unconstrained quotes instead of backticks in the reference manual [SPR-11650] #16273

4.0.3 Release

17 Jan 14:34

Choose a tag to compare

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