⭐ New Features
- Refactor AnnotationUtils#findAllAnnotationAttributes to accommodate non-default class loader [SPR-8752] #13394
- Support 'destroy method inference' for
@Bean
methods [SPR-8751] #13393 - Allow for setting of custom KeyGenerator in <cache:annotation-driven /> XML namespace [SPR-8730] #13372
- Expose BEST_MATCHING_PATTERN_ATTRIBUTE with RequestMappingHandlerMapping [SPR-8712] #13354
- Clarify stereotype and exception translation Javadoc [SPR-8691] #13333
- Clarify BeanFactory#containsBean Javadoc [SPR-8690] #13332
- UriTemplate takes wrong approach at encoding substituted template variables [SPR-8662] #13304
- Throw a more specific exception for a missing part in a multipart request, providing access to the name of the missing part [SPR-8642] #13284
- Introduce a generic method for invoking any non-public method in ReflectionTestUtils [SPR-8633] #13275
- ContentNegotiatingViewResolver should be able to follow redirect:views [SPR-8611] #13254
- Make JDBC namespace more placeholder and SpEL friendly [SPR-8592] #13236
- Maybe typo in the reference document [SPR-8591] #13235
- Add generic composite servlet filter [SPR-8585] #13229
- Typo in Spring Document [SPR-8579] #13223
- Would be useful to have getContentAsString method in MockPageContext [SPR-8575] #13219
- Document Lifecycle.stop() method synchronous or asynchronous behaviour [SPR-8570] #13214
- Spring embedded database fails to execute script after encoding changes [SPR-8562] #13206
- ContextCache should be keyed by MergedContextConfiguration instead of String [SPR-8549] #13193
- Introduce ConfigurableEnvironment#addActiveProfile(String) [SPR-8548] #13192
- Register JndiPropertySource by default in StandardServletEnvironment [SPR-8545] #13189
- Add support for load time weaving in JBoss AS7 [SPR-8533] #13177
- Add support for arguments of type javax.servlet.http.Part [SPR-8532] #13176
- MockHttpServletResponse API is incompatible with Servlet 3.0 HttpServletResponse [SPR-8529] #13173
- Please allow disabling of Cache in EhCacheFactoryBean [SPR-8504] #13150
- JavaMailSenderImpl should re-use protocol from mail session when creating transport instance [SPR-8501] #13147
- Tasks created using task:scheduled-tasks never start if default-lazy-init="true" [SPR-8498] #13144
- Make BeanFactoryLocator aware of autowiring (and primary flag) [SPR-8489] #13135
- Allow access to named sections of a multipart request body [SPR-8483] #13129
- Provide PropertySource implementation for command line arguments [SPR-8482] #13128
- When a cache can not be found from a
@Cacheable
annotation, no exception should be thrown to increase flexibility. [SPR-8477] #13123 - Use 400 Bad request instead of 500 when JSON payload is well formed but has an invalid structure [SPR-8476] #13122
- CollectionToObjectConverter uses the first element of a collection even when the collection could be assigned to an Object [SPR-8465] #13111
- Introduce Registration objects in Spring MVC Java-based configuration API [SPR-8454] #13100
- SpringOXM CastorMarshaller tests [SPR-8453] #13099
- Expose statusCodes field in SimpleMappingExceptionResolver as a read-only map. [SPR-8452] #13098
- SimpleUrlHandlerMapping Warning logs on startup [SPR-8449] #13095
- MVC handler exceptions missing context [SPR-8447] #13093
- spring:eval tag doesn't support dot(.) operator for accessing map values [SPR-8444] #13090
- Resolve ${...} placeholders in
@PropertySource
resource locations [SPR-8442] #13088 - Allow RedirectView to expose a bookmarkable URL [SPR-8431] #13077
- LocalContainerEntityManagerFactoryBean#setPackagesToScan should accept String... [SPR-8427] #13073
- AnnotationConfigContextLoader should not restrict the name of default configuration classes to ContextConfiguration [SPR-8395] #13042
- Update documentation of TransactionCallback.doInTransaction() [SPR-8390] #13037
- Introduce a DelegatingSmartContextLoader [SPR-8387] #13034
- Introduce SmartContextLoader SPI [SPR-8386] #13033
- Need support for Quartz 2.0 [SPR-8359] #13006
- Spring OXM CastorMarshaller unmarshalling methods [SPR-8341] #12989
- Spring OXM schema improvement for CastorMarshaller [SPR-8309] #12958
- Support Quartz 2.0.x [SPR-8275] #12923
- Support for better schemaName auto-detection in the TableMetaDataProvider [SPR-8270] #12918
- Allow default ParameterNameDiscoverer such that works by default for BeanFactory [SPR-8184] #12835
- Introduce
@EnableAspectJAutoProxy
(equivalent to aop:aspectj-autoproxy) [SPR-8138] #12789 - Support Hibernate 4.0.x [SPR-8096] #12751
- Register JndiPropertySource by default in StandardPortletEnvironment [SPR-8038] #12693
- Not specifying a multipart resolver for a multipart POST of files results in org.springframework.web.bind.MissingServletRequestParameterException [SPR-8001] #12656
- HDIV and Spring MVC integration [SPR-7943] #12598
- Checking for
@XmlRootElement
annotation should be made optional in Jaxb2Marshaller [SPR-7931] #12586 - Better handling of 204 No Content in RestTemplate [SPR-7911] #12566
- Allow custom request mapping conditions [SPR-7812] #12468
@PathVariable
and@ModelAttribute
incompatibility prevent me from having a nice "update" handler [SPR-7608] #12264- Support for JDK 7's JDBC 4.1 (JSR-TBD) [SPR-7579] #12235
- Support for JDK 7's concurrency and collections updates (JSR-166y) [SPR-7578] #12234
- Improvement to JDBC Named Parameter Replacement Strategy [SPR-7476] #12134
- Views: setModelKey, setRenderedAttributes should be consistent [SPR-7210] #11869
- ConfigurableWebBindingInitializer should provide setAutoGrowNestedPaths method [SPR-7038] #11700
- Authorize
@ModelAttribute
to play along with@RequestParam
/@RequestHeader
/... [SPR-6801] #11467 - Provide precise control over the attributes used in a redirect scenario [SPR-6796] #11462
- Flash Scope for Spring MVC (Without Spring Web Flow) [SPR-6464] #11130
- Add additional "query builder" features to UriTemplate [SPR-5973] #10641
- Support for PUTting form-encoded data [SPR-5628] #10299
- Support Servlet 3.0 (JSR-315) [SPR-5587] #10258
- Allow specifying which request attributes are included in RedirectView [SPR-1294] #5995
- Provide better options to specify attributes on a redirect [SPR-1068] #5775
🪲 Bug Fixes
- UriTemplate doesn't allow for ampersands as values for request parameters [SPR-8918] #13558
- Need a way to disable behavior added in "Automatically expose
@PathVariables
in the Model" SPR-7543 [SPR-8749] #13391 - Incorrect javadoc for AbstractResource.contentLength() -- looks like copy-paste error [SPR-8734] #13376
- Validator
@Bean
not initialized when extending from WebMvcConfigurationSupport [SPR-8725] #13367 - Incorrect link in javadoc to external javadoc [SPR-8720] #13362
- UriUrils.decode() not properly rejecting invalid escaped URLs [SPR-8706] #13348
- ResponseEntity now returned as a literal response when used in conjunction with
@ResponseBody
[SPR-8700] #13342 - Content negotiation should not take the context path into consideration [SPR-8678] #13320
- Content-Type on HttpForm Submissions Incorrectly Detected. [SPR-8676] #13318
- Bug in Cache Abstraction document [SPR-8670] #13312
- Javadoc of JdbcOperations is incorrect [SPR-8664] #13306
- Spring 3.1 Cache abstraction - UnsupportedOperationException in AbstractCacheAspect ... [SPR-8653] #13295
- RedirectView does not URL encode expanded path variable [SPR-8646] #13288
- LoadTimeWeavingConfiguration does not AUTODETECT aop.xml [SPR-8643] #13285
- When a controller method redirect to any url, the framework automatically appends all the model attributes in url query string even if those attributes are stored in session. [SPR-8636] #13278
- Cache Abstraction Documentation: minor typo [SPR-8632] #13274
- ConcurrentModificationException in InjectionMetadata class [SPR-8598] #13242
- UrlPathHelper.getOriginatingQueryString incorrectly tests for forwarded request [SPR-8596] #13240
- ModelAndViewContainer.view is overridden by ModelAndViewContainer.viewName [SPR-8593] #13237
- Controller method argument without annotations results in 400 error if not provided [SPR-8561] #13205
- SpringServletContainerInitializer in 3.1.M2 does not seem to work when using JSF 2.0 implementations [SPR-8557] #13201
- Regression in mvc handler mapping resolution [SPR-8536] #13180
- Annotation based bean creation fails with GsonBuilder [SPR-8522] #13166
- 'bold text' referenced in documentation is not actually bold [SPR-8520] #13165
- FactoryBean-returning
@Bean
methods short-circuit normal@Autowired
lifecycle in@Configuration
classes [SPR-8514] #13159 - FormatHelper formatMethodForMessage outputs each argument type as org.springframework.core.convert.TypeDescriptor rather than its actual type [SPR-8508] #13154
- SpringServletContainerInitializer raises NullPointerException when no WebApplicationInitializer implementations are present [SPR-8496] #13142
@EnableTransactionManagement
conflicts with <cache:annotation-driven /> [SPR-8494] #13140- Transaction problem with AnnotationSessionFactoryBuilder and
@EnableTransactionManagement
[SPR-8492] #13138 - JndiPropertySource getProperty throws Exception [SPR-8490] #13136
- RequestMappingHandlerAdapter .setInitBinderArgumentResolvers() & .setArgumentResolvers() do provide full control [SPR-8488] #13134
- RequestMappingHandlerAdapter.initInitBinderArgumentResolvers() does not add custom resolvers [SPR-8487] #13133
- Exception thrown when updating Hibernate search indexes when SessionFactory is configured using the AnnotationSessionFactoryBuilder [SPR-8469] #13115
- Proxied controller does not handle
@RequestParam
properly when using@EnableWebMvc
[SPR-8464] #13110 - URL suffixes such as "/" and ".*" not considered when checking whether to send a 405, 406 or 415 code [SPR-8462] #13108
- XMLEventStreamReader.getText() fails for COMMENT and ENTITY_REFERENCE events [SPR-8457] #13103
- Links in JIRA issues are not visible as links [SPR-8451] #13097
@PathVariable
values sent as query parameters in redirect unexpectedly [SPR-8448] #13094- XmlBeanFactoryTests.testFileSystemResourceWithImport fails on Windows if path contains spaces [SPR-8439] #13085
- Regression in support for property write method return type covariance [SPR-8432] #13078
- Spring MVC returns 500 Internal Server Error when required HTTP header is missing [SPR-8429] #13075
@EnableTransactionManagement
does not handle APC escalation [SPR-8411] #13058- DirectFieldAccessor fails to preserve shadowed fields [SPR-8398] #13045
- Reference documentation has incorrect name for Eval tag's "htmlEscape" attribute [SPR-8380] #13027
- Add [logger.isDebugEnabled] checks to [org.springframework.web.servlet.FrameworkServlet] [SPR-8085] #12740
- Spring SpEL - behavioural inconsistency when using greater than (>) operator in an expression [SPR-7840] #12496
- Qualifiers in regular expressions in
@RequestMapping
do not work [SPR-7787] #12443 - Non compilable example in section "15.4.1 Intercepting requests - the HandlerInterceptor interface" [SPR-7750] #12406
- Annotated Groovy controllers don't work properly [SPR-6268] #10935
- a Uri Value is incorrectly extracted if it contains '.'. [SPR-6164] #10832
- Errors in EL expressions in User Guide [SPR-5847] #10516
- AspectJ pointcut advisors are not working with Groovy script beans [SPR-5749] #10419
- Type pattern with annotation in
@DeclareParents
does not work [SPR-5307] #9980