Skip to content

4.1 RC1 Release

Compare
Choose a tag to compare
@spring-projects-issues spring-projects-issues released this 17 Jan 14:33
· 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

📔 Documentation

  • Reference documentation doesn't mention @ComponentScan at all [SPR-11846] #16465
  • callout formatting issue in documentation [SPR-11840] #16459
  • [doc] @PathVariable in last path segment truncated if "." is present [SPR-11728] #16350