4.1 RC1 Release
·
24174 commits
to main
since this release
⭐ 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 support for 404, 204, and 3xx responses to the MVC config [SPR-11543] #16168
- Support of ehcache's BlockingCache [SPR-11540] #16165
- Properly wrap runtime-registered caches with TransactionAwareCacheDecorator [SPR-11518] #16143
@SendToUser
should provide a single session reply mode [SPR-11506] #16131- Make it easy to extend MockMvc builders with additional syntax [SPR-11497] #16122
- Apply CacheResolver to Spring's caching abstraction [SPR-11490] #16115
- Support Mutable Messages with optional ID and timestamp headers [SPR-11468] #16094
- spring:url tag does not correctly encode forward slash / in path variable. Should be calling encodePathSegment [SPR-11401] #16028
- Introduce putIfAbsent() in Spring's Cache API [SPR-11400] #16027
- Create GroovyWebApplicationContext [SPR-11371] #15998
- Provide a
@CacheConfig
annotation to share class-level customizations [SPR-11316] #15940 - Support for
@Order
at the@Bean
method level [SPR-11310] #15934 - Support responding/sending messages to a session even without an authenticated user [SPR-11309] #15933
- Provide a websocket scope [SPR-11305] #15929
- While registering an excludePathPattern an includePathPattern is also required. [SPR-11130] #15756
- Add support for configuring ResourceResolver's through the MVC config [SPR-10951] #15579
- A compiler for SpEL [SPR-10943] #15571
- Enhance ResourceHttpRequestHandler with ResourceResolver strategy [SPR-10933] #15561
- Propagate LCEMFB.packagesToScan to native PersistenceProvider to pick up annotated packages [SPR-10910] #15538
- Applying the spring-messaging module to JMS [SPR-10873] #15500
- Provide better intercepting model for controllers returning
@ResponseBody
[SPR-10859] #15486 - Add SockJS client support [SPR-10797] #15423
- Be able to specify custom key generators on a per-cache basis [SPR-10629] #15257
- JSR-303 validation doesn't work with nested properties in case of direct field access [SPR-10623] #15251
- Add support for
@javax
.annotation.Priority as alternative to@Primary
[SPR-10548] #15179 - Support Content-based Hash Fingerprinted URLs in ResourceHttpRequestHandler [SPR-10310] #14944
- Allow strict handling of unknown media types in request param and path extension ContentNegotiationStrategy [SPR-10170] #14803
- Add support for asserting JSON in ContentResultMatchers, just as there is for XML [SPR-10113] #14746
- Introduce bootstrap strategy in the TestContext framework [SPR-9955] #14588
- Add JSONP support to MappingJackson2MessageConverter [SPR-9899] #14532
- YamlPropertiesFactoryBean and YamlMapFactoryBean [SPR-9897] #14530
- Annotation-driven JMS endpoints [SPR-9882] #14515
- org.springframework.beans.DirectFieldAccessor fails to go through field paths recursively [SPR-9705] #14339
- Support for JSR-107 caching annotations [SPR-9616] #14250
- Add Gson HttpMessageConverter [SPR-9488] #14123
- Cache Abstraction Exception Handling [SPR-9275] #13913
- Improve Javadocs for DMLC Regarding JmsTransactionManager [SPR-9200] #13838
- Allow autowiring of empty collection in
@Bean
method parameters using java.util.Optional [SPR-9132] #13771 - Spring
@Async
should have some way of specifying UncaughtExceptionHandler [SPR-8995] #13635 - Introduce qualifier in
@Cacheable
for cache manager name [SPR-8696] #13338 - DirectFieldBindingResult should support autoGrowNestedPaths [SPR-8692] #13334
- Support JSON-P Callback parameters in MappingJacksonJsonView [SPR-8346] #12994
- MBeanExporter should register MBeans later than the initialization phase [SPR-8045] #12700
- Support declarative SQL script execution in the TestContext framework [SPR-7655] #12311
- Improve handling of static resources [SPR-7400] #12058
- Integrate Jackson
@JsonView
[SPR-7156] #11815 - Allow configuring view resolution through the MVC Java config and the MVC Namespace [SPR-7093] #11753
- Support for
@ModelAttribute
interdependency [SPR-6299] #10965 - Allow links to
@Controller
methods from views without hardcoding URLs [SPR-5779] #10449 - Support programmatic starting and stopping of transactions in the TestContext framework [SPR-5079] #9753
🪲 Bug Fixes
- ConcurrentModificationException in ConfigurationClassParser.processDeferredImportSelectors [SPR-11997] #16613
- StompEncoder should never produce more than one 'content-length' header [SPR-11984] #16600
@CachePut
always prevents@Cacheable
even with mutually exclusive conditions [SPR-11955] #16571- WebMVC throws nullpointerexception on java 6 in TypeConverterDelegate [SPR-11888] #16507
- Incorrect URI built when processing reverse-proxied request with default port for scheme [SPR-11872] #16491
- SendToUser doesn't work if user destination prefix doesn't end with '/' [SPR-11868] #16487
- Wrong class name in multiple transaction managers section, spring documentation. [SPR-11862] #16481
- Eclipse project dependencies override locally declared Gradle dependencies [SPR-11836] #16455
- Contract of
@RequestBody
(required=true) not obeyed [SPR-11828] #16447 - MessageListenerAdapter might throw JMSException on message deserialization [SPR-11778] #16400
- WebSocketIntegrationTests failing against Undertow 1.0.15 [SPR-11777] #16399
- RequestMapping with 3 PathVariable doesn't work [SPR-6741] #11407