⭐ New Features
- Setting default charset in StringHttpMessageConverter [SPR-7904] #12559
- XStreamMarshaller should convert XStream StreamException to Spring exception in case of unmarshalling an empty stream [SPR-9536] #14170
- Use BufferedInputStream in SimpleMetaDataReader to double performance [SPR-9528] #14162
- Quartz 2.x scheduler support (SimpleTriggerFactoryBean) ignores repeatCount attribute [SPR-9521] #14155
- Backport constructor accepting Charset in StringHttpMessageConverter, from Spring for Android to Spring Web. [SPR-9487] #14122
- Hibernate 4 smart flushing does not work unless CMTTransactionFactory is being specified [SPR-9480] #14115
- Resolve nested ${..} placeholders via PropertyResolver/Environment [SPR-9473] #14108
- Add missing section ids in reference documentation [SPR-9346] #13984
- Use Jackson 2.0 for Jackson based json processing such as MappingJacksonJsonView [SPR-9302] #13940
- Clarify
@EnableScheduling
javadoc re ExecutorService shutdown [SPR-9280] #13918 - Reduce log level for message re: missing annotation [SPR-9233] #13871
- HttpClientErrorException should provide access to response headers [SPR-7938] #12593
- Invalid MIME-type causes a 500 error [SPR-7712] #12368
- Cache by-type lookups in DefaultListableBeanFactory [SPR-6870] #11536
- Enable Executor qualification with
@Async
[SPR-6847] #11513
🪲 Bug Fixes
- Documentation for AbstractResource.getFilename() says 'throws IllegalAccessException' when in fact it returns null [SPR-9561] #14195
- DatabasePopulatorUtils uses non-transactional connection [SPR-9457] #14092
- ApplicationContext environment inheritance may causes child context environment property sources to be lost [SPR-9444] #14080
- Fix package cycle established by
@EnableSpringConfigured
[SPR-9441] #14077 - Fix regression in ClassPathResource descriptions [SPR-9413] #14049
- Unknown status codes (i.e. not in HttpStatus enum) prevent HttpClientErrorException and HttpServerErrorExceptions from being raised [SPR-9406] #14042
- Exposure of setStatisticsEnabled/setSampledStatisticsEnabled causes cache not initialized exception when chaches are defined as spring beans. [SPR-9392] #14028
- Reinstate check for a type-level
@RequestMapping
annotation to decide if a bean contains@RequestMapping
methods [SPR-9374] #14010 - Cannot amend properties in RequestMappingHandlerMapping (e.g. useSuffixPatternMatch) using a bean post processor as ApplicationContextAwareProcessor always fires first initialising RequestMappingHandlerMapping [SPR-9371] #14007
- Regression: Incorrect behavior if a
@PathVariable
has the same name as a@ModelAttribute
's object property [SPR-9349] #13987 @PathVariable
drops extension [SPR-9333] #13971- UriComponentsBuilder.fromUri brakes url encoded query param [SPR-9317] #13955
- org.springframework.web.multipart.support.StandardServletMultipartResolver.cleanupMultipart causes an IOException on Resin [SPR-9299] #13937
- DispatcherPortlet shouldn't call exposeActionException during event processing [SPR-9287] #13925
- MutablePropertySources#get throws when it should return null [SPR-9179] #13817
- Scoped-proxy memory leak w/
@Resource
injection [SPR-9176] #13814 - org.springframework.context misses Import-Package on javax.inject [SPR-9173] #13811
- Avoid infinite loop in AbstractResource#contentLength [SPR-9161] #13799
- AbstractMessageConverterMethodProcessor ignores quality parameter when selecting a MediaType [SPR-9160] #13798
- "Content-Disposition" in class StandardMultipartHttpServletRequest should be case insensitive [SPR-9149] #13787
- Invalid MIME-type causes a 500 error [SPR-9142] #13781
- Race condition in AnnotationMethodHandlerExceptionResolver [SPR-9138] #13777
- Custom condition in request mapping handler does not work as an exclusion filter [SPR-9134] #13773
- Fix regression in
@PropertySource
placeholder resolution [SPR-9133] #13772 - ServletContextResource getFile should not rely on getRealPath (for WebLogic 10 compatibility) [SPR-8461] #13107