⭐ New Features
- Scoped proxies are fragile with respect to serialization [SPR-14117] #18689
- Auto-detect Kotlin Jackson module [SPR-14108] #18680
- Make localized field names lookup extensible in JSR-303 validation messages [SPR-14104] #18676
- LocalValidatorFactoryBean should expose a hook for using a custom ValidationProviderResolver [SPR-14100] #18672
- AnnotationTransactionAttributeSource should never apply to GroovyObject methods [SPR-14095] #18667
- AsyncRestTemplate should trigger no-output HTTP requests immediately as well [SPR-14093] #18665
- Refine TestPropertySourceUtils for Spring Boot usage [SPR-14088] #18660
- PathMatchingResourcePatternResolver should enforce consistent alphabetical sorting of directory content [SPR-14085] #18657
- Add setMultiTenantConnectionProvider to org.springframework.orm.hibernate5.LocalSessionFactoryBean [SPR-14072] #18644
- Support for HTTP Vary configuration (e.g. in reaction to locale-based rendering) [SPR-14070] #18642
- MockMvcWebConnection should share CookieManager with HtmlUnit driver [SPR-14066] #18638
- Allow
@Autowired
to be declared on parameters [SPR-14057] #18629 - Support creation of SynthesizingMethodParameter for constructor parameter [SPR-14054] #18626
- MockHttpServletResponse should convert Cookies into Set-Cookie header [SPR-14051] #18623
- ReflectionTestUtils should automatically unwrap proxies [SPR-14050] #18622
- DefaultUserDestinationResolver does not support "." separator convention [SPR-14044] #18616
- Reject
@ManagedResource
a on class which is not public [SPR-14042] #18614 - BigDecimal to Integer/Short/Byte should overflow like BigDecimal to Long does [SPR-14041] #18613
- HTTP persistent connections for HTTP Invoker and RestTemplate [SPR-14040] #18612
- Support conversion between Enum and Integer [SPR-14039] #18611
- Provide flag to allow ServletTestExecutionListener to run without
@WebAppConfiguration
[SPR-14035] #18607 - InjectionPoint/DependencyDescriptor as injectable argument for
@Bean
methods [SPR-14033] #18605 - Adding ability to read result sets row-by-row for MySql driver [SPR-14028] #18600
- Reconsider enablement of JNDIPropertySource by default [SPR-14026] #18598
- Support for OkHttp 3 [SPR-14024] #18596
- Remove double slash from resolved WebJar resources [SPR-14018] #18590
- Custom key classes for HashMap should implement Comparable [SPR-14017] #18589
- Make TestContextManager.getTestContext() public [SPR-14011] #18583
- Support placeholder for
@CrossOrigin
[SPR-14010] #18582 - Allow
@ComponentScan
custom filters to implement *Aware interfaces [SPR-14009] #18581 - Allow non-public
@Transactional
test methods [SPR-14000] #18573 - Introduce ContextCustomizer API in the TestContext framework [SPR-13998] #18571
- Support
@BeforeTransaction
and AfterTransaction on non-public methods [SPR-13997] #18570 - Validator is not set after initializing web socket MessageBroker from xml configuration [SPR-13996] #18569
- Introduce common composed annotations for web scopes [SPR-13993] #18566
- Introduce common composed annotations for
@RequestMapping
[SPR-13992] #18565 - Remove
@BootstrapWith
from@WebAppConfiguration
[SPR-13991] #18564 - Unique XML-specified constructor not accepted in case of unresolvable name [SPR-13987] #18559
- Consistent resolution of factory method exceptions [SPR-13985] #18557
- Support JacksonXmlModule.setDefaultUseWrapper [SPR-13975] #18547
- Support repeatable annotations as composed annotations [SPR-13973] #18545
- Allow a single element to override an array attribute in a meta-annotation [SPR-13972] #18544
- Improve CacheOperation equals/hashCode implementation performance [SPR-13970] #18542
- Allow spring.factories to load package private classes [SPR-13969] #18541
- Improve core container exception meta-data [SPR-13968] #18540
- TestContextManager.afterTestMethod doesn't handle java.lang.Error! [SPR-13961] #18534
- Consistent behavior for unwrap(null) on JPA and Bean Validation wrappers [SPR-13960] #18533
- ObjectFactory lacks method for getting bean with specified constructor arguments [SPR-13956] #18529
- Allow
@ContextConfiguration
to be omitted [SPR-13955] #18528 - Provide shorter 'alias' for SpringJUnit4ClassRunner [SPR-13954] #18527
@RequestHeader
name/value does not accept placeholders [SPR-13952] #18525- Prevent accessing the session in ServletRequestAttributes.updateAccessedSessionAttributes() if no session attributes need to be updated [SPR-13950] #18522
- Mis-typed URL should give 404 not 405 [SPR-13944] #18516
- An ObjectFactory variant with lenient not-unique handling [SPR-13943] #18515
- OkHttp RestTemplate adapter uses inappropriate async requests [SPR-13942] #18514
- Support for Common Annotations 1.1's javax.annotation.Resource.lookup() [SPR-13941] #18513
- Duplicate method signature in reference doc example [SPR-13940] #18512
- Provide way in MVC Java config to modify rather than replace default HandlerExceptionResolvers [SPR-13931] #18503
- ThreadPoolTaskExecutor does not allow for decorating Runnables [SPR-13930] #18502
- Consistent API between spring-web and spring-messaging HandlerMethod infrastructure [SPR-13929] #18501
- Speed up AntPathMatcher by doing prefix-match [SPR-13913] #18487
- Ability to add a custom ResourceLoader conveniently in AnnotationConfigWebApplicationContext or conveniently as can be done via spring boot [SPR-13905] #18479
- Convenient access to session and request attributes in controller methods [SPR-13894] #18468
- Support 'primary' transaction managers and data sources in the TestContext Framework [SPR-13891] #18465
- AnnotationAwareOrderComparator getPriority does not work if bean is a proxy [SPR-13884] #18457
- Add support for UTF-8 and other charset/encoding to
@PropertySource
[SPR-13874] #18447 - Support for conditional PUT in Web MVC (using If-Unmodified-Since header) [SPR-13863] #18436
- ResourceAccessException message could leak sensitive information [SPR-13860] #18433
- MultipartFile argument requires multipart request even when optional (and empty) [SPR-13849] #18422
- Validate
@RequestMapping
methods on AOP proxies [SPR-13842] #18415 - Support RFC 5861 (Cache Control Extensions) in com.springframework.http.CacheControl [SPR-13841] #18414
@AliasFor
attribute name should default to declaring attribute [SPR-13828] #18401- BeanFactoryAnnotationUtils.qualifiedBeanOfType does not work for
@Qualifier
on bean class [SPR-13819] #18392 - Consistent validation of annotated methods behind AOP proxies [SPR-13816] #18389
- EventListener condition SpEL cannot invoke bean methods [SPR-13814] #18387
- Add a convenience constructor to InternalResourceViewResolver [SPR-13813] #18386
- Cacheable condition SpEL cannot invoke bean methods [SPR-13812] #18385
- Users logged in to multiple servers do not get messages in sessions on remote servers [SPR-13800] #18373
- Support global separator in jdbc:initialize-database [SPR-13792] #18365
- ListenableFutureAdapter.addCallback may or may not propagate failures from a FailureCallback in the calling thread [SPR-13785] #18358
- Support weak Etags in ShallowEtagHeaderFilter [SPR-13778] #18352
- Lazy GenericMessage payload extraction for JMS endpoints [SPR-13777] #18351
- Support store-by-value in ConcurrentMapCacheManager [SPR-13758] #18331
- Avoid scoped destruction callbacks in case of no post-processor actually applying [SPR-13744] #18317
- Support mock-like handler method reference in Spring MVC Test [SPR-13736] #18309
- Parse form data request content and populate request params in Spring MVC Test [SPR-13733] #18306
- Background initialization option for JPA EntityManagerFactory / Hibernate SessionFactory [SPR-13732] #18305
- Revise AbstractJackson2HttpMessageConverter's generic type adaptation [SPR-13728] #18301
- Improve support for custom HTTP verbs in Spring MVC Test [SPR-13719] #18292
- Differentiate between TypeDescriptors with same annotations but different attributes [SPR-13714] #18287
- Hibernate5 metadata access [SPR-13710] #18285
- RedirectView should allow for bypassing HttpServletResponse#encodeRedirectURL [SPR-13693] #18268
- Caffeine caching support [SPR-13690] #18265
- PathMatchingResourcePatternResolver does not consider manifest based classpaths [SPR-13685] #18260
- Add
@RestControllerAdvice
annotation [SPR-13673] #18248 - ResourceHttpRequestHandler does not take into account mime types configured in WebMvcConfigurerAdapter [SPR-13658] #18233
- Add HTTP status 451: Unavailable For Legal Reasons [SPR-13632] #18210
- Allow specifying HTTP response Content-Type without losing default charset [SPR-13631] #18209
- Support SpEL next to placeholders in annotation attributes (e.g.
@Scheduled
) [SPR-13625] #18203 - Add support for x-forwarded- HttpServletRequest wrapping [SPR-13614] #18192
@Value
cannot be used as aliased meta-annotation [SPR-13603] #18181- Clarify how to prevent overwriting Cache-Control when
@SessionAttribute
is used [SPR-13598] #18176 - SystemEnvironmentPropertySource should try to replace hyphens as well [SPR-13594] #18172
- Make use of native doUpgrade operation in Undertow 1.3.5+ / 1.4 [SPR-13593] #18171
- Cannot inject List even using
@Named
[SPR-13585] #18162 - Support
@SendTo
at the class level [SPR-13578] #18155 - MockMvc: jsonpath with skip prefix [SPR-13577] #18154
- resttemplate multipart post with InputStreamResource not working [SPR-13571] #18147
@DateTimeFormat
's JSR-310 formatter is not strict in case of pattern [SPR-13567] #18143- ability to set response status on ModelAndView [SPR-13560] #18136
- allow ResponseStatus on Controller class [SPR-13547] #18123
- empty set in MVC
@ModelAttribute
is null [SPR-13502] #18080 - Full support for Jackson 2.7 [SPR-13483] #18062
- Support
@Cache
* as merged composed annotations [SPR-13475] #18054 - Detect
@Autowired
constructors for configuration classes [SPR-13471] #18050 - Support custom qualifier annotations in
@Transactional
[SPR-13452] #18032 - Introduce predefined composed annotations in core Spring [SPR-13442] #18022
- Use AnnotatedElementUtils instead of AnnotationUtils wherever feasible [SPR-13440] #18020
- Coerce
@ResponseBody
CharSequences to strings [SPR-13423] #18002 - Request parameters cannot bind to Optional<List> [SPR-13418] #17997
- Support MessageSourceResolvable to string argument value at SpringValidatorAdapter [SPR-13406] #17986
- Prevent binding for
@ModelAttribute
[SPR-13402] #17982 - Flexible locale resolution based on supported languages [SPR-13330] #17915
@MessageMapping
should support generically typed Message argument with converted payload [SPR-13288] #17878- BCP 47 compatible Locale support [SPR-13274] #17865
- JsonView support for JMS [SPR-13237] #17828
- Better parameterized type serialization for the request body in RestTemplate [SPR-13154] #17745
@ComponentScan
should be repeatable [SPR-13151] #17742- Spring should have default support for OPTIONS, HEAD and Allow [SPR-13130] #17721
- MockRestRequestMatchers should have matchers for form data [SPR-13044] #17636
- Generics support improvement for core.convert.support.GenericConversionService [SPR-12948] #17541
- Support multiple composed annotations on a single annotated element [SPR-13486] #17490
- Add support to enhance default resource loader [SPR-12857] #17455
- Support of client interceptors in Spring's AsyncRestTemplate [SPR-12538] #16971
- Make
@Autowired
optional on a single constructor of a class decorated with@Component
[SPR-12278] #16883 @Autowired
does not work for target bean of type Collection [SPR-12180] #16794- Improve
@PropertySource
loading support [SPR-12116] #16732 - MVC config should register custom arguments resolvers with default ExceptionHandlerExceptionResolver [SPR-12058] #16674
- Allow
@SendToUser
applied to class [SPR-12047] #16663 - UriTemplate does not escape semicolons in path segments [SPR-11652] #16275
- MockRestServiceServer should allow for an expectation to occur multiple times. [SPR-11365] #15991
@ExceptionHandler
cannot handler java.lang.Error despite the annotation accept ? extends Throwable [SPR-11106] #15732- Allow adding resources to ReloadableResourceBundleMessageSource [SPR-10314] #14948
- Log at info level when skipping an application context due to profile not being active [SPR-10202] #14835
- Spring MVC Test support for expectations on multivalue response headers [SPR-10087] #14720
- UriComponents cannot process collections [SPR-9712] #14346
- Using Spring beans as a part of key in cache annotations (
@Cacheable
etc.) doesn't work [SPR-9578] #14212 - Cannot reference FactoryBean in a SpEL expression [SPR-9511] #14145
- Provide means to configure multithreaded access for cache abstraction [SPR-9254] #13892
- Allow the use of custom PropertySource annotations in
@Configuration
classes [SPR-8963] #13603 - Support
@Autowired-like
self injection [SPR-8450] #13096 - Limit size of context cache in the TestContext framework [SPR-8055] #12710
- Allow for normal bean wiring semantics for types assignable to Map [SPR-7915] #12570
- Spring AOP proxies with annotation-based pointcuts are not serializable [SPR-6910] #11575
- PathMatchingResourcePatternResolver should close jar file from JarURLConnection if not cached [SPR-6295] #10961
- Adding trim-capability to property configurers [SPR-5839] #10509
- Allow DispatcherServlet/ServletWrappingController to work with the extended WebDAV methods [SPR-4799] #9476
🪲 Bug Fixes
- In the latest 4.3 snapshots HttpEntityMethodProcessor uses a Java 8 API [SPR-14086] #18658
- Transitive implicit aliases do not always work with
@AliasFor
in merged annotations [SPR-14069] #18641 - Behaviour of configuration class constructor injection changes with the presence of
@Configuration
[SPR-14015] #18587 - Fix order of arguments passed to assert in HeaderResultMatchers#string(String, String) [SPR-14004] #18576
- Optional autowire of Map<String, BeanType> accidentally falls back to unrelated Map<String, String> [SPR-13963] #18536
- Part list/array gets resolved to all parts in current request [SPR-13893] #18467
- Container tries to autowire dependencies despite explicit arguments given [SPR-13808] #18381
📔 Documentation
- FormTag's "modelAttribute" should consistently supersede "commandName" [SPR-14094] #18666
- Cache documentation wrongly states that Java does not support repeating annotations [SPR-14012] #18584
- [doc] Update reference on RestTemplate test support to mention strategies and option to test using MockMvc as the server [SPR-13815] #18388