⭐ New Features
@RestController
should accept a bean name value [SPR-11360] #15986- Compatibility with JOpt 4.6 [SPR-11359] #15985
- HibernateJpaVendorAdapter should use new interface when on Hibernate 4.3 [SPR-11358] #15983
- Revisit need for Introspector.flushFromCaches call in CachedIntrospectionResults [SPR-11356] #15981
@RequestPart
(...) MultipartFile[] does not work (List<MultipartFile works) [SPR-11353] #15978- Provide alternative RestTemplate constructor to avoid default MessageConverter creation [SPR-11351] #15976
- Add Missing Constructors Back to MessageHandlingException [SPR-11345] #15969
- Unnecessary class loading in AspectJ RuntimeTestWalker [SPR-11344] #15968
- Reduce footprint due to RootBeanDefinition [SPR-11343] #15967
- Inconsistent serializable RemoteInvocation(Result) classes [SPR-11337] #15961
- Bootstrapping the EntityManagerFactory should log the name of the persistence unit being used [SPR-11333] #15957
- Include TestContext in log message when starting a new transaction in TransactionalTestExecutionListener [SPR-11323] #15947
- Add control of what HTTP Request method AbstractFileResolvingResource methods exists, lastModified and lastModified uses on http url resources [SPR-11320] #15944
- Provide a mechanism for adding ApplicationContextInitializers to DispatcherServlet's ApplicationContext [SPR-11314] #15938
- Optimize lookup of field errors in AbstractBindingResult [SPR-11304] #15928
- Make conversion framework extensible [SPR-11303] #15927
- Encode user name in user-specific message destinations. [SPR-11302] #15926
- Add patch() to MockMvcRequestBuilders [SPR-11299] #15923
- Re-consider including HibernateTemplate and related classes for Hibernate 4 [SPR-11291] #15915
- Upgrade Tiles2 TilesConfigurer class to Tiles 2.2.2 [SPR-11285] #15909
- ThreadPoolTaskExecutor Should Implement AsyncListenableTaskExecutor [SPR-11282] #15906
- Allow ObjectMapper to be modified within MappingJackson2MessageConverter [SPR-11279] #15903
- GenericMessage unnecessarily copies message headers before passing to MessageHeaders [SPR-11268] #15893
- better method identification in AnnotationTransactionAttributeSource logging [SPR-11267] #15892
- MappingJackson2(Http)MessageConverter should be more verbose in canRead/canWrite checks (on Jackson 2.3) [SPR-11261] #15886
- Add potentially existing orm.xml file to default persistence unit when packages to scan is used [SPR-11260] #15885
- Add Converter implementations that convert legacy Date instances into JDK 8 date/time types [SPR-11259] #15884
- AntPathMatcher creates many temporary objects [SPR-11258] #15883
- Allow configuring RequestMappingHandlerMapping in mvc:annotation-driven [SPR-11253] #15878
- Private constant HttpHeaders.UPGARDE misspelled [SPR-11241] #15866
- HibernateJpaVendorAdapter causes Hibernate 4.3 to produce deprecation warnings [SPR-11240] #15865
- Spring4 MVC Unit test does not compile [SPR-11238] #15863
- Support for JSR-356 on WildFly 8 / Undertow [SPR-11237] #15862
- orm.xml should be recognized by default if using JPA [SPR-11234] #15859
- Allow setting principal on connect [SPR-11228] #15853
- Upgrade to CGLIB 3.1 and Objenesis 2.1 [SPR-11226] #15851
- Provide 'with implementationType' overloads on ResolvableType [SPR-11218] #15843
- Spring formatting with Formatting from String to String and spring:eval does not work [SPR-11215] #15840
- No stack trace on SockJS HTTP transport failure to write to the response [SPR-11201] #15827
- Allow configuring a PathMatcher for use in MappedInterceptor [SPR-11197] #15823
- Support for
@Valid
in@MessageMapping
annotated methods [SPR-11185] #15811 - Allow easier customization of MessageConverters with
@EnableWebSocketMessageBroker
and XML namespace [SPR-11184] #15810 - Consider improvements to SockJS message cache [SPR-11183] #15809
- client-side stomp authentication headers are passed to the message broker [SPR-11154] #15781
- avoid dependency on reactor-tcp when using a stomp broker relay [SPR-11153] #15780
- Allow
@Controller
methods to produce a response with no body and custom headers by returning an HttpHeaders instance [SPR-11129] #15755 - Auto-registration of modules (in particular JSR-310 and Joda-Time support) in Jackson's ObjectMapper [SPR-11040] #15668
- Provide access to SimpleTriggerFactoryBean property startTime [SPR-10940] #15568
- tx:annotation-driven and cache:annotation-driven should have order defined as a token [SPR-10886] #15514
- Expose path-related request mapping settings in the MVC XML namespace [SPR-10163] #14796
- CronTriggerFactoryBean doesn't allow calendar name and description to be specified [SPR-9771] #14405
- Improve the performance of BeanInfo lookups in CachedIntrospectionResults [SPR-9014] #13653
- Be able to define tx:annotationdriven order attribute as a ref [SPR-7342] #12001
- JMSTemplate setDeliveryPersistent(boolean deliveryPersistent) javadoc incorrect [SPR-3983] #8663
🪲 Bug Fixes
- CachedIntrospectionResults caching jar entries and creating big pressure on GC [SPR-11818] #16438
- CompoundClassLoader.loadClass is trying to load some framework class and comsuming all web container threads. [SPR-11499] #16124
- Upgrading spring from 3.2 to 4 - Issue with generics (extends) [SPR-11382] #16009
- SchedulerAccessor 'globalJobListeners' and 'globalTriggerListeners' not working with 2.0.x and 2.1.x [SPR-11362] #15988
- BeanWrapper fails in case of read/write method mismatch (e.g. EhCacheFactoryBean.setMemoryStoreEvictionPolicy) [SPR-11361] #15987
- AbstractAnnotationConfigDispatcherServletInitializer does not allow consolidating all configuration into the "root" context [SPR-11357] #15982
- Regression from 3.2.x for FormattingConversionService.addFormatterForFieldType [SPR-11354] #15979
- SpEL Projection Regression [SPR-11348] #15972
- Handle NoClassDefFoundError for TestExecutionListeners consistently in the TestContext framework [SPR-11347] #15971
- PlaceholderConfigurerSupport.doProcessProperties() loses stack trace on exception [SPR-11346] #15970
- ResolvableType tests failing against OpenJDK 8 build 124 [SPR-11342] #15966
- ServletTestExecutionListener is not enabled by default in abstract base test classes [SPR-11340] #15964
- Performance issues with SerializableTypeWrapper on Java 1.7.0_51 [SPR-11335] #15959
- AbstractWebSocket client doesn't allow setting Cookie header [SPR-11332] #15956
- Wrong assert in AspectJAwareAdvisorAutoProxyCreator.setAspectJAdvisorFactory() [SPR-11330] #15954
- spring-messaging automatically assumes Principal.getName() is unique for sending messages to users [SPR-11327] #15951
@Header
does not take any arbitrary headers in. [SPR-11326] #15950- Additional browser tabs receive duplicate messages sent to user destination [SPR-11325] #15949
- Downgrade accidental use of Java 1.7 APIs [SPR-11319] #15943
- ServletWebRequest.checkNotModified() methods should treat HEAD identically to GET [SPR-11317] #15941
- MockMvc does not provide contentType for MockHttpServletRequest [SPR-11308] #15932
- SimpleBrokerMessageHandler destinationPrefixes are not trimmed [SPR-11307] #15931
- Bad type comparison in ReflectionHelper.getTypeDifferenceWeight(List paramTypes, List argTypes) [SPR-11306] #15930
- StandardEnvironment's system environment access produces warning with stacktrace on WebSphere [SPR-11297] #15921
- Full Quartz 2.2 compatibility, including LocalDataSourceJobStore [SPR-11284] #15908
- UnsupportedOperationException with use of AlternativeJdkIdGenerator on z/OS WAS 8.5 [SPR-11278] #15902
- NPE in StompSubProtocolHandler.handleMessageFromClient [SPR-11277] #15901
@Async
with cglib based proxy causes memory leak in permgen [SPR-11276] #15900@Async
with cglib based proxy causes memory leak in heap [SPR-11275] #15899- mvc:annotation-driven incorrectly detects validation provider on classpath [SPR-11272] #15897
- EhCacheFactoryBean should not call set(Sampled)StatisticsEnabled on EhCache 2.7/2.8 [SPR-11265] #15890
- hardcoded ".../queue/..."-part in DefaultUserDestinationResolver conflicts with rabbitmq exchange naming [SPR-11263] #15888
- NavigableSet and NavigableMap lookup missing in CollectionFactory class in spring-core [SPR-11257] #15882
- XMLEventStreamWriter fails to handle writeEmptyElement() followed by writeAttribute() [SPR-11254] #15879
- Problem with autowiring of "generic Beans" (defined via RootBeanDefinition(s)) [SPR-11250] #15875
- Regression: ClassCastException using
@CacheEvict
with primitive varargs [SPR-11249] #15874 - Regression: InjectionMetadata cache needs to handle different bean classes per bean name [SPR-11246] #15871
- UriComponentsBuilder - NoSuchMethodError: java.lang.reflect.Method.getParameterCount [SPR-11245] #15870
- Backward compatibility of BeanUtils.copyProperties broken for copying wrapped types to primitive types (and vice versa) on 3.2.6 and 4.0.0 [SPR-11231] #15856
- Regression in 4.0.0 - A scoped-proxy bean cannot override another bean [SPR-11229] #15854
- Regression: Incorrect generic type resolved by AbstractMessageConverterMethodArgumentResolver [SPR-11225] #15850
- Using
@Scheduled
annotation fails in 4.0.0 but worked with 3.2.5 [SPR-11223] #15848 - context:component-scan element says error in the mvc-cofig.xml [SPR-11221] #15846
- Infinite Recursion in org.springframework.core.ResolvableType.hashCode(ResolvableType.java:692) [SPR-11219] #15844
- theme resolution fails with "IllegalArgumentException: Basename must not be empty" when an empty theme value is provided via request url [SPR-11128] #15754
- Fix
@Bean
meta-annotation detection when using ASM [SPR-10488] #15121
📔 Documentation
- Incorrect example in section 9.9.2 [SPR-11318] #15942
- Document that Servlet mocks are now incompatible with the Servlet 2.5 spec [SPR-11292] #15916
- Spring Integration Testing documentation refers to Cactus, a dead project [SPR-11280] #15904
- Missing documentation for testing Spring Messaging with WebSockets [SPR-11266] #15891
- Add explanation of
@Profile
("default") to reference documentation [SPR-11256] #15881 - Error in documentation regarding exclusion of commons-logging [SPR-11232] #15857
- Document how websocket server implementations should be configured by users to limit message size [SPR-11023] #15651
- Update reference documentation regarding idref and local [SPR-8182] #12833