spring-framework

Spring Framework

APACHE-2.0 License

Stars
55K
Committers
1K

Bot releases are hidden (Show)

spring-framework - v5.3.34

Published by spring-builds 6 months ago

⭐ New Features

  • Log column type for limited support message in JdbcUtils.getResultSetValue #32603
  • Avoid additional unnecessary Annotation array cloning in TypeDescriptor #32477
  • Avoid cloning empty Annotation array in TypeDescriptor #32466

🐞 Bug Fixes

  • Refine scheme, userinfo, host and port parsing in UriComponentsBuilder #32618
  • MethodIntrospector.selectMethods() fails to detect bridge methods across ApplicationContexts #32588
  • JmsUtils.commitIfNecessary catches and ignores JMS IllegalStateException, losing message with ActiveMQ Artemis #32480
  • Consistently apply TaskDecorator to ManagedExecutorService as well #32457

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.43 #32594
spring-framework - v6.1.5

Published by spring-builds 7 months ago

⭐ New Features

  • Extract reusable method for URI validations #32440
  • Allow UriTemplate to be built with an empty template #32432
  • Optimize Coroutine invocations #32390
  • Improve exception message when Scheduled tasks that are using Virtual Threads fail on shutdown #32381
  • Add query parameters to MockMvc Kotlin DSL #32371
  • Optimize content type parsing in ServletServerHttpResponse #32361
  • Refine handling of disconnected client error in ExceptionHandlerExceptionResolver #32359
  • Refine \*HttpMessageConverter#getContentLength return value null safety #32325
  • Optimize HttpHeaders.getAcceptLanguageAsLocales #32318
  • SimpleAsyncTaskScheduler: consistently apply default error handling #32298
  • Use Spliterator of underlying collection in MutablePropertyValues / MutablePropertySources #32281

🐞 Bug Fixes

  • SpEL fails to compile expression indexing into boolean array #32400
  • WebClient Observations are missing error #32389
  • WebClient request sent twice instantly when using @Cacheable #32370
  • AopUtils.getMostSpecificMethod does not return original method for proxy-derived method anymore #32365
  • Fix ServletResponseHttpHeaders#get null handling #32362
  • Compiled SpEL expression fails if #root or #this is a non-public type #32356
  • Suspend handler methods fail on nullable value class parameters #32353
  • Better protect against concurrent error handling for async requests #32340
  • Performance degradation due to Kotlin value class checks #32334
  • With value referenced from property file in XML configuration, setter selection can be random in case of overloaded setter methods (e.g. on SimpleClientHttpRequestFactory) #32329
  • constructor-impl of Kotlin value class is not called #32324
  • ContentCachingResponseWrapper no longer honors Content-Type and Content-Length #32317
  • Hibernate native image support broken by HHH-17643 #32311
  • Revisit DatabaseMetadata#getProcedures to only apply fallback if original search yield more than one result #32295
  • Remove Observation.Context from WebClient request #32198

πŸ“” Documentation

  • Refine "Redirecting to a resource" section code sample #32423
  • Javadoc of ReactorNettyClientRequestFactory#setExchangeTimeout methods have wrong default value #32419
  • Fix order of 2 sections in the Validation chapter of the reference manual #32408
  • Fix Javadoc #32403
  • Document that SpEL expressions using array construction cannot be compiled #32401
  • Improve documentation for @Sql execution phases regarding lifecycle #32343
  • Omit parameter names in REST Clients section of reference docs #32335
  • Different transaction name when using TransactionAspectSupport.currentTransactionStatus().transactionName #32310
  • Provide guidelines for using Kotlin properties with proxies (@RequestScope and similar use cases) #32287
  • Correct documentation for userDestinationPrefix in MessageBrokerRegistry #32272

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.12.4 #32431
  • Upgrade to Reactor 2023.0.4 #32420

❀️ Contributors

Thank you to all the contributors who worked on this release:

@Xednar, @ZeroCyan, @bsgrd, @ddaaac, @kilink, @qeeqez, and @quaff

spring-framework - v6.0.18

Published by spring-builds 7 months ago

⭐ New Features

  • Extract reusable method for URI validations #32441
  • Allow UriTemplate to be built with an empty template #32437
  • Refine \*HttpMessageConverter#getContentLength return value null safety #32333

🐞 Bug Fixes

  • WebClient Observations are missing error #32399
  • AopUtils.getMostSpecificMethod does not return original method for proxy-derived method anymore #32368
  • Better protect against concurrent error handling for async requests #32341
  • ContentCachingResponseWrapper no longer honors Content-Type and Content-Length #32321
  • Hibernate native image support broken by HHH-17643 #32312

πŸ“” Documentation

  • Fix order of 2 sections in the Validation chapter of the reference manual #32409

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2022.0.17 #32421
spring-framework - v5.3.33

Published by spring-builds 7 months ago

⭐ New Features

  • Extract reusable method for URI validations #32442
  • Allow UriTemplate to be built with an empty template #32438
  • Refine *HttpMessageConverter#getContentLength return value null safety #32332

🐞 Bug Fixes

  • AopUtils.getMostSpecificMethod does not return original method for proxy-derived method anymore #32369
  • Better protect against concurrent error handling for async requests #32342
  • Restore Jetty 10 compatibility in JettyClientHttpResponse #32337
  • ContentCachingResponseWrapper no longer honors Content-Type and Content-Length #32322

πŸ“” Documentation

  • Build KDoc against 5.3.x Spring Framework Javadoc #32414

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.42 #32422
spring-framework - v5.3.32

Published by spring-builds 8 months ago

⭐ New Features

  • Add CORS support for Private Network Access #31974
  • Avoid early getMostSpecificMethod resolution in CommonAnnotationBeanPostProcessor #31969

🐞 Bug Fixes

  • Consistent parsing of user information in UriComponentsBuilder #32247
  • QualifierAnnotationAutowireCandidateResolver.checkQualifier does identity checks when comparing arrays used as qualifier fields #32108
  • Guard against multiple body subscriptions in Jetty and JDK reactive responses #32101
  • Static resources caching issues with ShallowEtagHeaderFilter and Jetty caching directives #32051
  • ChannelSendOperator.WriteBarrier race condition in request(long) method leads to response being dropped #32021
  • Spring AOP does not propagate arguments for dynamic prototype-scoped advice #31964
  • MergedAnnotation swallows IllegalAccessException for attribute method #31961
  • CronTrigger hard-codes default ZoneId instead of participating in scheduler-wide Clock setup #31950
  • MergedAnnotations finds duplicate annotations on method in multi-level interface hierarchy #31825
  • PathEditor cannot handle absolute Windows paths with forward slashes #31728
  • Include Hibernate's Query.scroll() in SharedEntityManagerCreator's queryTerminatingMethods set #31684
  • TypeDescriptor does not check generics in equals method (for ConversionService caching) #31674
  • Slow SpEL performance due to method sorting in ReflectiveMethodResolver #31665
  • Jackson encoder releases resources in wrong order #31657
  • WebSocketMessageBrokerStats has null stats for stompSubProtocolHandler since 5.3.2 #31642

πŸ“” Documentation

  • Document cron-vs-quartz parsing convention for dayOfWeek part in CronExpression #32131

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.41 #32276
spring-framework - v6.0.17

Published by spring-builds 8 months ago

⭐ New Features

  • RouterFunctionMapping does not implement MatchableHandlerMapping #32222
  • Optimize Map methods in ServletAttributesMap #32197

🐞 Bug Fixes

  • @JsonDeserialize(builder = ...) does not work in GraalVM native image #32257
  • Consistent parsing of user information in UriComponentsBuilder #32246
  • "IllegalStateException: Cannot call sendError() after the response has been committed" when IOException is thrown during resolving method argument values on Tomcat >= 10.1.16 #32207
  • Cannot process AOT when spring-orm is on the classpath without JPA #32160
  • QualifierAnnotationAutowireCandidateResolver.checkQualifier does identity checks when comparing arrays used as qualifier fields #32107
  • Guard against multiple body subscriptions in Jetty and JDK reactive responses #32102
  • Exceptions thrown by custom error handlers are not recorded in RestTemplate observations #32063
  • Static resources caching issues with ShallowEtagHeaderFilter and Jetty caching directives #32050
  • ChannelSendOperator.WriteBarrier race condition in request(long) method leads to response being dropped #32020
  • Destroy method not found in Native image for ExecutorService Bean type #32017

πŸ“” Documentation

  • Update basics.adoc #32151
  • Document cron-vs-quartz parsing convention for dayOfWeek part in CronExpression #32130

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2022.0.16 #32275
spring-framework - v6.1.4

Published by spring-builds 8 months ago

⭐ New Features

  • Add missing RequestPredicate variants in coRouter #32256
  • Adapt ConcurrencyThrottleSupport to use ReentrantLock for better virtual thread support #32251
  • Create optimized versions of request predicates #32244
  • Include function name in SpelMessage.INCORRECT\_NUMBER\_OF\_ARGUMENTS\_TO\_FUNCTION #32239
  • Add Coroutines support to NonReactiveHandlerMethodPredicate #32227
  • RouterFunctionMapping does not implement MatchableHandlerMapping #32221
  • Initialize (another) Map with correct size in RequestPredicates #32215
  • Make SmartLifecycle phase value configurable in STOMP message handling components #32205
  • Initialize Map with correct size in RequestPredicates #32201
  • Let BeanPropertyRowMapper subclasses customize mapped names #32199
  • Improve client and server handling of STOMP heartbeat failures #32195
  • Optimize Map methods in ServletAttributesMap #32189
  • Support binary streams with JdbcClient #32161
  • Annotate core functional SPIs in SpEL with @FunctionalInterface #32135
  • Cannot use SimpleJdbcInsert with catalog name #32124
  • Refactor ReloadableResourceBundleMessageSource #32118
  • Reuse MapPropertySource for DynamicValuesPropertySource implementation (as a template for custom variants) #32110
  • Improve Spring AOP performance for methods without specific advice #32104
  • Make it possible to configure any TaskExecutor through ChannelRegistration #32081
  • Add support for JSON streams to Kotlin Serialization #32074
  • Avoid reflecting to obtain validationGroups every time the call is made #32068
  • Reject @RequestMapping and @HttpExchange declarations on the same element #32065
  • Missing toString for ExponentialBackOff #32061
  • Reject multiple @HttpExchange declarations on the same element #32049
  • ClientAbortException from StreamingResponseBody can cause infinite loop of dispatches #32042
  • Log warning if multiple @PostMapping, @GetMapping, etc. annotations are declared #31962
  • Using types in @SessionAttributes is sometimes not reflected in the model #30463
  • Improve read publisher cancel handling to avoid connections in CLOSE_WAIT state with WebSocket on Tomcat #30393
  • Provide more control over JPA entities scanning #27892
  • Provide and document a way to handle single-page application redirects #27257
  • MockMvcClientHttpRequestFactory swallows ServletResponse.errorMessage #26720

🐞 Bug Fixes

  • Cannot send Server-Sent Events without data using WebMvc.fn SseBuilder #32270
  • Fix pathExtension null-safety in Kotlin DSLs #32254
  • SimpleEvaluationContext.Builder is not final and has a public constructor #32253
  • @JsonDeserialize(builder = ...) does not work in GraalVM native image #32238
  • RestClientAdapter claims it supports request attributes when it does not #32232
  • ThreadPoolTaskExecutor rejecting tasks as soon as the context has been closed can lead to exceptions during web app shutdown #32226
  • Consistent parsing of user information in UriComponentsBuilder #32211
  • "IllegalStateException: Cannot call sendError() after the response has been committed" when IOException is thrown during resolving method argument values on Tomcat >= 10.1.16 #32206
  • No longer able to override the toString() in HandlerMethod from 6.1.3 #32184
  • 6.1.3 regression: aspect not called with multiple inheritance #32181
  • Unable to use baseUrl on builders created from RestTemplate #32180
  • MessageDeliveryException on shutdown with open WebSocket connections #32171
  • With XML configuration, setter selection can be random in case of overloaded setter methods (e.g. on SimpleClientHttpRequestFactory in 6.1.3 from convertForProperty method) #32159
  • Cannot process AOT when spring-orm is on the classpath without JPA #32155
  • SpEL's Indexer.setArrayElement() incorrectly requests conversion to wrapper instead of primitive #32147
  • SpEL increment and decrement operators do not generate prefix AST representation #32144
  • Validation of PartEventHttpMessageReader#maxParts is off by one #32122
  • QualifierAnnotationAutowireCandidateResolver.checkQualifier does identity checks when comparing arrays used as qualifier fields #32106
  • Guard against multiple body subscriptions in Jetty and JDK reactive responses #32100
  • Parameter based cache keys on repository methods can't resolve after 6.1.2->6.1.3 #32087
  • Exceptions thrown by custom error handlers are not recorded in RestTemplate observations #32060
  • Static resources caching issues with ShallowEtagHeaderFilter and Jetty caching directives #32039
  • RestClient calls interceptors from RestTemplate twice #32038
  • DefaultRestClientBuilder.defaultRequest(...) doesn't do anything #32028
  • Alias resolution error message in SimpleAliasRegistry is misleading #32025
  • Destroy method not found in Native image for ExecutorService Bean type #32006
  • RequestPredicate fails with WebFlux 6.1.2 #31955
  • ChannelSendOperator.WriteBarrier race condition in request(long) method leads to response being dropped #31865

πŸ“” Documentation

  • Fix Kotlin syntax errors in RestClient builder example in rest-clients.adoc #32265
  • Use double dot in "META-INF/aop.xml" documentation #32264
  • Document that functions are variables in SpEL EvaluationContexts #32258
  • Add section on AOT best practices about registering beans programmatically #32241
  • Add section on AOT best practices about registering singletons #32240
  • Fixes syntax error in JdbcClient examples #32236
  • Document @RequestAttribute in HTTP clients #32231
  • Fix typo in beanvalidation.adoc #32218
  • Variables definition fixed #32216
  • Document safe navigation support for collection selection/projection in SpEL #32208
  • Document usage of SpEL's power operator in the reference manual #32187
  • Document support for overloading operators in SpEL #32182
  • Update basics.adoc #32145
  • Document between operator in SpEL #32140
  • Update documentation for supported letters in variable names in SpEL #32138
  • Document repeat and characer subtraction String operators in SpEL #32137
  • Document increment and decrement operators in SpEL #32136
  • Document cron-vs-quartz parsing convention for dayOfWeek part in CronExpression #32128
  • Fix typo #32111
  • Graceful shutdown does not cancel @Scheduled tasks #32109
  • Fixes atlas-extension order #32083
  • Spring MVC and WebFlux docs need to say method validation applies if any method parameter has constraint annotations #32082
  • Add @see PathPattern to function router methods with a pattern parameter #32045
  • Rename class-data-sharing.html to cds.html #32044
  • Enable table striping by default in the reference manual #32022
  • Document that Conditions can be ordered #32019
  • Document how @JvmName could mitigate Kotlin internal modifier impact #32010
  • Update docs on server side use of @HttpExchange to make it more clear when it is a good fit #32008
  • Document safe navigation semantics within compound expressions in SpEL #21827
  • Document limitation of SpEL regarding minimum values for numeric literals #20779

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.12.3 and Context Propagation 1.1.1 #32277
  • Upgrade to Reactor 2023.0.3 #32274

❀️ Contributors

Thank you to all the contributors who worked on this release:

@1515biubiubiu, @Akaame, @OlgaMaciaszek, @andreibastun, @cirusthenter, @erichaagdev, @jee14, @jmondo, @kilink, @kzander91, @mnhock, @quaff, @rotilho, @rwinch, @senocak, @spencergibb, and @wfouche

spring-framework - v6.0.16

Published by spring-builds 9 months ago

⭐ New Features

  • Exclude URI query from remaining WebClient checkpoints #32001
  • Add CORS support for Private Network Access #31975
  • Avoid early getMostSpecificMethod resolution in CommonAnnotationBeanPostProcessor #31968

🐞 Bug Fixes

  • Double error response handling on suspended methods #31990
  • DefaultDataBuffer fails to transform its content to a string. #31979
  • Spring AOP does not propagate arguments for dynamic prototype-scoped advice #31963
  • MergedAnnotation swallows IllegalAccessException for attribute method #31960
  • CronTrigger hard-codes default ZoneId instead of participating in scheduler-wide Clock setup #31949
  • HandlerMappingIntrospector is throwing PatternSyntaxException for wildcards in the request URL #31946
  • ForwardedHeaderFilter should reject invalid requests #31894
  • @Async does not support Unit? return type #31891
  • Significant increase in memory consumption StringDecoder when splitting input by delimiters. #31859

πŸ“” Documentation

  • Update ContentRequestMatchers#multipartData Javadoc #31989

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2022.0.15 #31997
spring-framework - v6.1.3

Published by spring-builds 9 months ago

⭐ New Features

  • Perform checks for bean validation constraints in HandlerMethod only when needed #32007
  • Exclude URI query from remaining WebClient checkpoints #31992
  • Avoid early getMostSpecificMethod resolution in CommonAnnotationBeanPostProcessor #31967
  • Introduce processInjection() in CommonAnnotationBeanPostProcessor #31956
  • Make maximum length of SpEL expressions in an ApplicationContext configurable #31952
  • JdkClientHttpRequest may block indefinitely #31911
  • Allow Propagation.NOT\_SUPPORTED with @TransactionalEventListener #31907
  • Review HibernateJpaVendorAdapter to align dialect to use for recent Hibernate versions #31896
  • Improve method validation support for containers with constraints on container elements #31887
  • Method validation is not triggered when constraints are applied to the elements of a List #31870
  • Use standard String comparison in ExtendedBeanInfo.PropertyDescriptorComparator #31866
  • Detect Jetty 12 "max length exceeded" message for MaxUploadSizeExceededException #31850
  • Ensure that Observation is stopped and Scope is closed in doReceiveAndExecute() #31798
  • Support the use of @Resource in test classes in AOT mode #31733
  • Add support for configuring sslContext in StandardWebSocketClient #30680
  • Refine allocations for improved memory profile when creating a large amount of proxy instances #30499
  • Check ResponseStatusException reason as MessageSource code for ProblemDetail #30300
  • SpringValidatorAdapter fails in getRejectedValue if ValueExtractor used in property path to unwrap a container type #29043
  • Add CORS support for Private Network Access #28546
  • Introduce NoOpTaskScheduler for disabling @Scheduled tasks in test setups #28073
  • MvcUriComponentsBuilder should resolve property placeholders in request mapping paths #26795
  • Allow SockJsUrlInfo to be overridden in SockJsClient #25888
  • Extending abstract class does not expose parameter annotations #25788
  • DatabasePopulatorConfigUtils should only set a populator if matching scripts are defined #23405
  • @annotation pointcut is not matched with complex hierarchy and generics against classes compiled by Eclipse [SPR-17310] #21843
  • Allow registration of application event listeners in a functional way [SPR-16872] #21411
  • Allow CronTrigger to resume from specified timestamp [SPR-14909] #19475

🐞 Bug Fixes

  • Using a URI variable for port in WebClient causes an IllegalStateException #32003
  • [spring-tx] Unable to override prepareSynchronization of AbstractPlatformTransactionManager from v6.1.0 #32000
  • RestClientResponseException handles responseHeaders case-sensitive #31978
  • CronTrigger hard-codes default ZoneId instead of participating in scheduler-wide Clock setup #31948
  • HandlerMappingIntrospector is throwing PatternSyntaxException for wildcards in the request URL #31937
  • java.lang.NullPointerException with Scheduled tasks through DefaultScheduledTaskObservationConvention #31918
  • HibernateJpaVendorAdapter refers to org.hibernate.dialect.Oracle12cDialect that does not exist in recent Hibernate versions #31892
  • ClassNotFoundException: org.hibernate.dialect.MySQL57Dialect with Hibernate 6.4 #31889
  • Inconsistent inclusion of base URL in WebClient URI template attribute since Spring WebFlux 6.1.2 #31882
  • @Async does not support Unit? return type #31881
  • Web handlers don't support Kotlin extensions #31876
  • DefaultDataBuffer fails to transform its content to a string #31873
  • With XML configuration, setter selection can be random in case of overloaded setter methods (e.g. on SimpleClientHttpRequestFactory in 6.1) #31872
  • Complete frame callback when opcode is not PONG #31869
  • @Cacheable does not respect cache hit when empty Mono/Flux response is returned #31868
  • Unable to use sync cache with reactivestreams #31861
  • Spring Websocket - JettyWebsocketHandlerAdapter copyByteBuffer fills Buffer with zeros #31857
  • NullPointerException with @RequestMapping on Kotlin property accessors #31856
  • Non-deterministic native image JSON hints invalidate Gradle build cache #31852
  • DefaultServerRequestObservationConvention is silently used when multiple convention beans are defined #31864
  • Significant increase in memory consumption StringDecoder when splitting input by delimiters. #31848
  • Convert args to Kotlin value class in CoroutinesUtils #31846
  • ForwardedHeaderFilter should reject invalid requests #31842
  • NotReadablePropertyException due to mismatch between ConstraintViolation property path and BindingResult target in MethodValidationAdapter #31746
  • Built-in method validation validates @RequestBody parameter twice #31711
  • Double error response handling on suspended methods #31541
  • Spring AOP does not propagate arguments for dynamic prototype-scoped advice #28407
  • Only log status in ServletRequestHandledEvent #27595
  • MergedAnnotation swallows IllegalAccessException for attribute method #27182
  • AOP pointcut erroneously matching ProceedingJoinPoint.proceed when called from within another advised bean #26068

πŸ“” Documentation

  • Document exception handling for HTTP Interface client with RestClient and RestTemplate #31991
  • Update ContentRequestMatchers#multipartData Javadoc #31988
  • Update Spring Properties section of reference manual #31987
  • Document Kotlin internal modifier impact on @Bean #31985
  • Add missing preposition in reference guide #31977
  • Adapt Jackson2ObjectMapperBuilder documentation to mention ParameterNamesModule registration #31959
  • Fix typo in kotlin.adoc #31958
  • Fix references to "application/*+xml" in Javadoc #31951
  • Update outdated elements in Kotlin reference documentation #31943
  • Update autowired-qualifiers.adoc to refer the -parameters Java compiler flag #31939
  • Fix Kotlin example for simpler SELECT variant using IN #31932
  • Fix usage of WebClientAdapter in reference documentation #31917
  • With virtual threads enabled, separate fixed-delay tasks cannot run concurrently #31900
  • Fix formatting in scheduling.adoc #31899
  • Specify use of regexp Path Pattern in javadoc #31886
  • Improve the documentation and discoverability of CoWebFilter #31877
  • Add Javadoc for MockHttpServletResponse getContentLength method #31833
  • Revisit JdbcClient/JdbcTemplate javadoc for operations that take a KeyHolder #31486
  • Document that CGLIB cannot proxy package private methods declared in a superclass is in a different package #28973
  • Doc: ConfigurationClassParser's property source composition requires distinct (Resource)PropertySources names #28886
  • Provide guidelines in AspectJ documentation to avoid dumps #27650
  • Document autowiring of ServletRequest and other scoped proxy beans provided by WebApplicationContext #26201
  • Clarify assisted constructor injection through getBean call with provided arguments #24955
  • Document behaviour of @Transactional in reactive environments with non-reactive signatures #23277
  • Thread-safety and visibility issues not documented [SPR-4307] #8986

πŸ”¨ Dependency Upgrades

  • Early support for Java 23 #31929
  • Upgrade to Kotlin 1.9.22 #31971
  • Upgrade to Micrometer 1.12.2 #31996
  • Upgrade to Reactor 2023.0.2 #31995

❀️ Contributors

Thank you to all the contributors who worked on this release:

@0x1306e6d, @Drezir, @FBibonne, @JuHyun419, @OlgaMaciaszek, @SuhasBk, @T45K, @Yaklede, @aaronrosser, @achhibi, @bohub12, @dodie, @dogglezz, @izeye, @janjouketjalsma, @kzander91, @leonchen83, @pri88yank, @quaff, @scordio, @slovenlyimp, and @wfouche

spring-framework - v6.1.2

Published by spring-builds 10 months ago

⭐ New Features

  • Optimize ContentCachingRequestWrapper allocation for known request size #31834
  • Inherit parent context in coRouter DSL #31831
  • Declare isStatic and releaseTarget as default methods on TargetSource #31820
  • Delegation support for JDBC 4.3 ConnectionBuilder and ShardingKeyBuilder #31795
  • Support for a read-only DataSource in LazyConnectionDataSourceProxy #31785
  • Add MySQLIdentityColumnMaxValueIncrementer #31784
  • Introduce overloaded MockPart constructor that accepts the Content-Type #31757
  • Introduce toString(Charset) in FastByteArrayOutputStream #31737
  • Avoid byte array copy in getContentAsString #31731
  • Improve "active" metrics handling in WebClient observations #31702
  • Make ResourceArrayPropertyEditor supports comma delimited location patterns #31700
  • Consistently log exceptions from TestExecutionListeners at WARN level #31688
  • Document need for -parameters flag in exception messages #31675
  • Improve @RegisterReflectionForBinding for enums #31570
  • Support direct shard database operation routing in Spring JDBC #31506
  • Log test aborted/skipped exceptions at INFO level in the TestContext framework #31479
  • Avoid double proxying for @Resource @Lazy fallback autowiring #31447
  • Add support for tuning the code generation for bean property values #31427
  • Avoid race condition in ConcurrentReferenceHashMap #31008
  • Allow functional bean registration to set bean order (equivalent to @Order) #30849
  • Allow AOT generated classes to be excluded from code analyzer tools #30824
  • Error page does not utilize forwarded prefix #30828
  • Fix SimpleJdbcCall named parameter binding for Sybase ASE #30231
  • DefaultWebClient ignores baseUrl when setting URI_TEMPLATE_ATTRIBUTE #30027
  • Avoid eager checkDefaultConnectionProperties call in LazyConnectionDataSourceProxy #29931
  • Allow TransactionAwareDataSourceProxy to eagerly fetch the connection #29423
  • Extract common value generator out of BeanDefinitionPropertyValueCodeGenerator #28999
  • PostgresCallMetaDataProvider should detect current schema as indicated by the JDBC Connection #28723
  • Implement setMaxTextMessageSize and setMaxBinaryMessageSize in JettyWebSocketSession #28325
  • Optimize cache used in AutowiredAnnotationBeanPostProcessor #28293
  • @Async aspect should clear cached executors when different BeanFactory set #28201
  • Component scanning should be able to ignore encrypted classes with invalid class version #27691
  • Property to control URL decoding in ServletCookieValueMethodArgumentResolver #26989
  • Support Predicate- based mappedHandler config in AbstractHandlerExceptionResolver #26772
  • SimpleJdbcCall with namedBinding=true for MS SQL Server #26072
  • Improve default setNull performance on PostgreSQL and MS SQL Server (e.g. for NamedParameterJdbcTemplate batch updates) #25679

🐞 Bug Fixes

  • <replaced-method /> unnecessarily requires explicit arg-type since 6.0 #31826
  • Avoid nested constructor data binding if there are no request parameters #31821
  • Custom Init or Destroy method from an interface cannot be invoked in a native image #31819
  • Avoid potential refresh deadlock with AbstractApplicationContext#registerShutdownHook #31811
  • Classes proxied by CGLIB produces NPE with coroutine async job on Springboot 3.2.0 #31809
  • Fix Comparators.nullsLow and Comporators.nullsHigh behavior #31808
  • MergedAnnotations finds duplicate annotations on method in multi-level interface hierarchy #31803
  • Pickup coroutineContext saved by CoWebFilter in coRouter #31793
  • Support for multiple CoWebFilters that change CoroutineContext #31792
  • TestCompiler should not discover annotation processors on the classpath by default #31791
  • @Cacheable key generator is called after invoking the cached method in case of a miss #31789
  • Encountered NotSerializableException for HttpComponentsHeadersAdapter when serializing HttpClientErrorException #31787
  • Exclude Part from nested constructor binding in WebFlux #31778
  • Fix condition for "Too many elements" in MimeTypeUtils.sortBySpecificity() #31769
  • AnnotatedTypeMetadata's getMergedRepeatableAnnotationAttributes() method ignores classValuesAsString #31768
  • SimpleAsyncTaskScheduler: task with fixed delay stops working after unhandled exception #31749
  • Spring unable to decode aggregated JSON content #31747
  • cannot resolve ServerRequest::pathVariable in nested RequestPredicate again #31732
  • @NotNull on JPA entity not respected in schema generation #31726
  • @Cacheable throws NullPointerException when encountering cached null value for empty Mono #31722
  • RestClient ResponseSpec.body() throws an exception instead of returning null if no response body is available #31719
  • UrlResource getFilename() suddenly returns null for certain paths #31718
  • DisconnectedClientHelper is missing "AbortedException" #31717
  • Constructor binding fails for Duration argument if request parameter is not present #31709
  • TraceId is missing in WebFlux controller handlers #31706
  • Wrong observation status tag when a Not Found in a webflux application #31703
  • Correct conversion from Resource[] with length 1 to Collection #31699
  • @ComponentScan added directly and via a meta-annotation leads to multiple scanning #31704
  • Unable to use kotlin value classes as function arguments to functions mapping web endpoints #31698
  • @DisabledInAotMode does not work in native image #31705
  • GenericTypeResolver does not resolve nested generics - causes issues with Jackson & Spring MVC #31690
  • DefaultManagedTaskScheduler created manually now throws a NPE if the scheduled executor is not configured #31751
  • Include Hibernate's Query.scroll() in SharedEntityManagerCreator's queryTerminatingMethods set #31682
  • TypeDescriptor does not check generics in equals method (for ConversionService caching) #31672
  • DataBinder fails with "No primary or single unique constructor found for interface MultipartFile" #31669
  • SpEL expression on a reloadable type can no longer be resolved #31668
  • Programmatic registration of RequestMappingInfo leads to "IllegalArgumentException: Expected lookup path" #31662
  • Current Observation.Context missing from WebClient request #31609
  • Multipart messages with empty parts are not correctly parsed in WebFlux #30953
  • Always fall back to original method if annotation pointcut used #30534
  • PathEditor cannot handle absolute Windows paths with forward slashes #29881
  • @Resource dependency injection fails with AOT/native #29614
  • Reactor Netty can only get the first cookie value when multiple cookies with the same name exist #28490
  • Slow SpEL performance due to method sorting in ReflectiveMethodResolver #28377
  • Cache-busting does not work when lazy-initialization is enabled #25488
  • Fail to register MBean with bean name containing invalid character #23608
  • Use of DatabaseMetadata#getProcedures (and functions) should take search string escape into account #22725

πŸ“” Documentation

  • Fix link text in WebFlux @HttpExchange section of reference docs #31796
  • Improve documentation for custom exception requirements for RestClient #31783
  • Java-based Container Configuration section contains duplicated Section Summary #31777
  • SpEL Language Reference section contains duplicated Section Summary #31776
  • Incorrect #this and #root variable examples in SpEL documentation #31770
  • Document explicit @ModelAttribute is required for reflection hints inference #31765
  • Fix Javadoc for MockRestServiceServer.bindTo(RestClient.Builder) #31741
  • Document -Dspring.context.exit=onRefresh for Project CRaC testing purpose #31724
  • Link to spring.factories used in the TestContext framework in the reference manual #31723
  • Clarify that DI is a type of IoC #31679
  • Polish GenericTypeResolver Javadoc #31663
  • RestClient documentation improvements #31659
  • Add Javadoc to MvcResult getResponse().getErrorMessage() #31386
  • Review Default Profile section in the reference documentation #30319
  • Documentation needs to be updated with instructions for STOMP Client #28409
  • Document LazyConnectionDataSourceProxy setup for routing datasource to act on transaction definition read-only flag #21415
  • Document LazyConnectionDataSourceProxy for IsolationLevelDataSourceRouter usage with DataSourceTransactionManager #19688

πŸ”¨ Dependency Upgrades

  • Upgrade to Kotlin 1.9.21 #31667
  • Upgrade to Micrometer 1.12.1 #31813
  • Upgrade to Reactor 2023.0.1 #31814

❀️ Contributors

Thank you to all the contributors who worked on this release:

@HeartPattern, @HyeongMokJeong, @Johannes-Rost, @JuHyun419, @Nijco, @cdalexndr, @dogglezz, @freesme, @giuseppemilicia, @hpoettker, @izeye, @kilink, @lugaramirez, @mathieu-amblard, @meedbek, @perlun, @quaff, @reda-alaoui, @shin-mallang, and @tylerbertrand

spring-framework - v6.0.15

Published by spring-builds 10 months ago

⭐ New Features

  • Skip buffer allocation in StreamUtils.copy(String) #31631

🐞 Bug Fixes

  • <replaced-method /> unnecessarily requires explicit arg-type since 6.0 #31828
  • MergedAnnotations finds duplicate annotations on method in multi-level interface hierarchy #31824
  • Fix condition for "Too many elements" in MimeTypeUtils.sortBySpecificity() #31773
  • Spring unable to decode aggregated JSON content #31772
  • Multipart messages with empty parts are not correctly parsed in WebFlux #31766
  • PathEditor cannot handle absolute Windows paths with forward slashes #31727
  • TraceId is missing in WebFlux controller handlers #31716
  • Wrong observation status tag when a Not Found in a webflux application #31715
  • Fail to register MBean with bean name containing invalid character #31708
  • Include Hibernate's Query.scroll() in SharedEntityManagerCreator's queryTerminatingMethods set #31683
  • TypeDescriptor does not check generics in equals method (for ConversionService caching) #31673
  • SpEL expression on a reloadable type can no longer be resolved #31670
  • Slow SpEL performance due to method sorting in ReflectiveMethodResolver #31664
  • Jackson encoder releases resources in wrong order #31656
  • Current Observation.Context missing from WebClient request #31646
  • WebSocketMessageBrokerStats has null stats for stompSubProtocolHandler since 5.3.2 #31641
  • <jee:local-slsb> no longer works with a business-interface attribute #31630
  • GeneratedFiles#addSourceFile should not allow to add a source in the default package #31629
  • PathResourceResolver.getResource() does not log warning if Resource#getURL() throws exception #31624

πŸ“” Documentation

  • Document explicit @ModelAttribute is required for reflection hints inference #31767
  • Documentation needs to be updated with instructions for STOMP Client #31678
  • Improve STOMP WebSocket documentation for input message buffer size #31654

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2022.0.14 #31815
spring-framework - v6.1.1

Published by spring-builds 11 months ago

⭐ New Features

  • Skip buffer allocation in StreamUtils.copy(String) #31621
  • Caching and Event Listening support do not reuse internal delegates for their evaluation contexts #31617
  • Java 17: resource.isReadable() with concurrency leaks large amounts of non-heap memory #30955

🐞 Bug Fixes

  • Spring MVC: Unexpected bytes added to the HTTP response for kotlin.Unit return type in controller methods #31648
  • Spring Data Redis Cache implementation is not compatible with Cache.retrieve(key) semantics #31637
  • GeneratedFiles#addSourceFile should not allow to add a source in the default package #31628
  • <jee:local-slsb> no longer works with a business-interface attribute #31627
  • Non-blocking @Cacheable method does not support condition with #result #31626
  • PathResourceResolver.getResource() does not log warning if Resource#getURL() throws exception #31623
  • Jackson encoder releases resources in wrong order #30493
  • WebSocketMessageBrokerStats has null stats for stompSubProtocolHandler since 5.3.2 #26536

πŸ“” Documentation

  • Fix links related to Spring WebFlux #31632
  • Extract recurring asciidoc links to attributes #31619
  • Improve STOMP WebSocket documentation for input message buffer size #31616
  • Document support for AppCDS #31497

❀️ Contributors

Thank you to all the contributors who worked on this release:

@7fantasy7, @Star-ho, and @quaff

spring-framework - v6.1.0

Published by spring-builds 11 months ago

⭐ New Features

  • When using Oracle, JdbcClient.update(KeyHolder) does not work without explicit key column names #31607
  • Introduce way to convert ClientHttpResponse to desired type #31597
  • Property-driven onRefresh exit for AppCDS purpose #31595
  • No Micrometer traceId in JMS listener container errorHandler #31559
  • Register Hibernate @EmbeddableInstantiators registered on JPA embeddables for reflection #31534
  • Improve method validation support for errors on elements within a container #31530
  • Support pattern matching for method names in ControlFlowPointcut #31435
  • Review reachability metadata contributions after GraalVM changes #31213
  • handleEmptyBody of RequestBodyAdvice should apply also when content-type is not set #30522

🐞 Bug Fixes

  • Regression with @EnableJpaAuditing using Spring Boot 3.2-RC2 in native image #31575
  • Retrieving the response body as a List of POJOs fails with RestClient but passes with WebTestClient #31574
  • ExecutorLifecycleDelegate should call ExecutorService.isTerminated() in ?.isRunning() #31549
  • RestTemplate POST to endpoint using Digest Auth no longer works in 6.1 #31516
  • Code generation for constructor arguments must cast null indexed argument value #31508
  • \n in form model when using Jetty 12 client and multipart/form-data #31361
  • Add status handler to recognize unknown status codes outside of 4xx/5? #31202

πŸ“” Documentation

  • Document how to log @Sql scripts and statements #31589
  • Link to KDoc API documentation from Javadoc overview #31587
  • Fix link in Javadoc of ConfigurableMockMvcBuilder #31542
  • Add note about @[Enabled|Disabled]InNativeImage in reference manual #31438
  • Document @DisabledInAotMode in the reference manual #31437
  • Document @Sql class-level execution phase support in the reference manual #31377
  • Document that Micrometer's "error" tag should be preferred vs. legacy "exception" tag #31514

πŸ”¨ Dependency Upgrades

  • Upgrade to Context Propagation 1.1.0 #31599
  • Upgrade to Kotlin 1.9.20 #31539
  • Upgrade to Micrometer 1.12.0 #31556
  • Upgrade to Reactor 2023.0.0 #31557

❀️ Contributors

Thank you to all the contributors who worked on this release:

@Young-Zen, @duesenklipper, @izeye, @k-seth, and @wakingrufus

spring-framework - v6.0.14

Published by spring-builds 11 months ago

⭐ New Features

  • Provide caching for HandlerMappingIntrospector lookups #31588
  • Log4jLog needs to re-resolve ExtendedLogger on deserialization (for compatibility with Log4J 2.21) #31582
  • Optimize StandardTypeLocator for hotspot when the same classes are resolved #31579
  • Add duplicate key exception error code for SAP HANA database #31554
  • Do not delegate TRACE to HttpServlet on ERROR dispatch #31457
  • Add properties setter to ProblemDetail #31430

🐞 Bug Fixes

  • GeneratedFiles#addSource does not provide proper context if the specified class name is invalid #31612
  • MessageBuilder#createMessage should not define the payload as @Nullable #31610
  • Default Mixin added by Jackson2ObjectMapperBuilder are missing required runtime hints #31606
  • NettyDataBuffer#toByteBuffer fails if readPosition > 0 #31605
  • Avoid duplicate JAR resources in PathMatchingResourcePatternResolver on MS Windows #31598
  • NamedParameterUtils broken parsing related to square brackets #31596
  • Multipart cleanup is done too eagerly #31567
  • Jakarta validation field constraints in superclass are ignored in native image #31552
  • Function column out doesn't resolve to SqlOutParameter #31550
  • Restore support for recursive annotations in Kotlin #31518
  • Resolve to empty MultiValueMap when no matrix variables are provided #31483
  • ProxyFactoryBean declaration may lead to unexpected non-fatal "FactoryBean threw exception from getObjectType" stacktrace output #31473
  • Use of @Value in compact constructor of a record should not register method injection #31433
  • Prevent duplicate HTTP server observations for cancelled exchanges #31417
  • Spring MVC raises MissingPathVariableException resulting in 500 instead of 400 error when path segment is u001F or u00D and cannot be converted to target type UUID #31382
  • Ensure consistent value count in ConcurrentReferenceHashMap#Segment #31373
  • HeaderContentNegotiationStrategy.resolveMediaTypes throws unexpected IllegalArgumentException #31254
  • Session Cookie in Reactive WebSession is not deleted if maxAge is set through cookie initializer (e.g. via Boot application property) #31214
  • DefaultWebClient logs URI without the port number #30519
  • CGLIB BeanCopier falls back to ClassLoader.defineClass for public target #28699
  • BeanUtils.copyProperties() consumes large amount of memory #27246

πŸ“” Documentation

  • RestTemplate initialization documentation in 6.0.x mentions Netty, yet no ClientHttpRequestFactory is present in the package. #31526
  • Correct typo in annotations.adoc #31519
  • Document X-Forwarded-* Headers #31491
  • Improve support and documentation for the "default" bean definition profile name #29071
  • Document that pertypewithin is supported by Spring AOP #25887
  • Document alternatives of using multiple PropertyPlaceholderConfigurers [SPR-9989] #14623

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.10.13 #31586
  • Upgrade to Reactor 2022.0.13 #31585

❀️ Contributors

Thank you to all the contributors who worked on this release:

@CrotchBurnt, @GVictorG7, @PiotrFLEURY, @baratrax, @bernie-schelberg-invicara, @huyachigege, @izeye, @lorenzsimon, @martin-lukas, and @rwinch

spring-framework - v5.3.31

Published by spring-builds 11 months ago

⭐ New Features

  • Log4jLog needs to re-resolve ExtendedLogger on deserialization (for compatibility with Log4J 2.21) #31583

🐞 Bug Fixes

  • MessageBuilder#createMessage should not define the payload as @Nullable #31611
  • Avoid duplicate JAR resources in PathMatchingResourcePatternResolver on MS Windows #31603
  • Spring web integration commons fileupload receives files and other parameter uploads, with a null pointer #31564
  • Function column out doesn't resolve to SqlOutParameter #31560
  • Resolve to empty MultiValueMap when no matrix variables are provided #31484
  • BeanUtils.copyProperties() consumes large amount of memory #31481
  • CGLIB BeanCopier falls back to ClassLoader.defineClass for public target #31436
  • R2DBC Connection is closed during transaction when using TransactionAwareConnectionFactoryProxy #31411
  • HibernateJpaDialect and HibernateExceptionTranslator throw SQLExceptionTranslator-provided exception instead of returning it #31410
  • NamedParameterJdbcTemplate throws unexpected exception for null query #31394
  • LazyResolutionMessage does not implement proper toString #31385
  • Illegal reflective access in ContextOverridingClassLoader.isEligibleForOverriding #31233

πŸ“” Documentation

  • Clarify documentation for @Transactional on interfaces #31401
  • Default behavior of BeanPropertyRowMapper.getColumnValue(ResultSet, int, Class) inconsistent with code #31349
  • Referencing a @Bean method in a @Configuration class' @PostConstruct method leads to circular reference #31339
  • Incorrect reference information about CGLIB supported method visibility #31311

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.38 #31584
spring-framework - v6.1.0-RC2

Published by spring-builds 12 months ago

⭐ New Features

  • Support ContextLoader config in @SpringJUnitConfig and @SpringJUnitWebConfig #31498
  • TypeDescriptor and ResolvableType cache in GenericTypeAwarePropertyDescriptor #31490
  • Consistent Class and array matching in ResolvableType.isAssignableFrom #31487
  • BeanDefinitionRegistryPostProcessor should declare empty default postProcessBeanFactory method #31476
  • Remove support for Protobuf 2.x and protobuf-java-format #31465
  • Refine CRaC restoration logs #31462
  • Allow repeatable writes in StreamingHttpOutputMessage #31449
  • Add support for merging two BeanRegistrationAotContribution instances #31446
  • Kotlin BeanFactory.getBean extension fails with nested generic in context #31439
  • Log warning and skip resource hint registration for classpath location patterns #31429
  • Revisit AOT support for generic constructor argument values #31420
  • Add UriBuilderFactoryArgumentResolver. #31413
  • Add Coroutines support for @Cacheable #31412
  • PartEvent API should support limiting the number of file parts #31343
  • Revise support for quoted identifiers in SimpleJdbcInsert #31208
  • When configuration class parsing fails, provide more information about the class that triggered the failure #31146
  • WebClientResponseException defaults to ISO-8859-1 #31072
  • Introduce @DisabledInAotMode in the TestContext framework #30834
  • Support TypedStringValue during AOT processing #29074
  • Support ETag generation on ResourceHttpRequestHandler #29031
  • Better error reporting for @Bean creating when bean instance has been replaced with an incompatible type #28897
  • Add Coroutines support for @EventListener #28343
  • Support "*" catch-all mappings for MockMvc Filter registrations #28041
  • Guard against ConcurrentModificationException when the response processes commitActions #27587
  • Improve ControlFlowPointcut extensibility #27187
  • Uploading a too-large file should be a 4xx client error, not a 500 Internal Server Error #27170
  • Add special handling of disconnected client errors in ExceptionHandlerExceptionResolver #26181

🐞 Bug Fixes

  • ConstructorResolver rejects a candidate if the parameter value is null #31495
  • 3.2.0-RC1: No primary or single unique constructor found for interface java.util.Set #31488
  • Can't link to Spring Framework 6.1.0 release candidate documentation #31480
  • In MockMvc tests all filters end up with empty-string filterName, breaking OncePerRequestFilter #31474
  • <mvc:annotation-driven> should not instantiate bean property values #31472
  • Graal VM native image: Substitution target for o.s.o.j.v.Target_BytecodeProvider is not loaded #31452
  • JdkClientHttpRequest does not support Content-Length 0 #31451
  • Fix typo in ClassUtils.forName() #31428
  • AOT processing fails to determine proper target for a FactoryBean that produces an array #31426
  • BeanDefinitionPropertyValueCodeGenerator#orderForConsistency expects values to be Comparable #31419
  • Conversion not applied to @RequestParam default value if used for "null after conversion" case #31336
  • HandlerMethodValidationException.Visitor incorrectly triggers other() method instead of requestParam() for @RequestParam validation errors #31329
  • AbstractApplicationContext.refresh() leaves bean resources uncleaned when SmartInitializationSingleton throws a non BeansException #28878

πŸ“” Documentation

  • Document pattern matching support in NameMatchMethodPointcut #31500
  • Fix small typo in javadoc #31455
  • Expand explanation for the "lite" bean approach #29957

πŸ”¨ Dependency Upgrades

  • Upgrade to ASM 9.6 #31431
  • Upgrade to Kotlin 1.9.20-RC2 #31494

❀️ Contributors

Thank you to all the contributors who worked on this release:

@OlgaMaciaszek, @bdshadow, @funky-eyes, @izeye, @larsgrefer, and @mmoayyed

spring-framework - v6.1.0-RC1

Published by spring-builds about 1 year ago

⭐ New Features

  • Enforce REQUIRES_NEW for correct transaction configuration on transactional event listeners #31414
  • TestCompiler should allow to configure the Locale that renders compiler messages #31408
  • Consistent Object result declarations for JdbcClient's ResultQuerySpec #31403
  • Move ReactorResourceFactory to org.springframework.http.client package #31399
  • Prevent message resolution after context close #31397
  • Handle STOMP messages to user destination in order #31395
  • AOT bean registrations miss reflection hints on property fields #31390
  • Support Jackson's DatatypeFeature in Jackson2ObjectMapperBuilder #31380
  • Allow Filters to be initialized when they're added to MockMvc #31362
  • Use schema-based config in sql-error-codes.xml #31354
  • Optimize uses of onErrorResume() #31352
  • AOT bean registrations miss reflection hints on interfaces #31350
  • SimpleAsyncTaskScheduler should run fixed-delay tasks on scheduler thread #31334
  • Allow custom observation convention for RestClient #31325
  • MockMvcHttpClientConnector support for RequestPostProcessor hook #31298
  • Expose shouldHandle(ApplicationEvent) in ApplicationListenerMethodAdapter #31295
  • Make ReactorNettyClientRequestFactory lifecycle-aware #31281
  • Add a constructor with externally managed Reactor Netty resources to ReactorNettyClientRequestFactory #31280
  • Consistent CannotAcquireLockException translation for PostgreSQL serialization failure behind JPA #31274
  • Simplify ServerRequestExtensions.queryParamOrNull() #31264
  • Reduce nested class lookups in ClassUtils #31258
  • Print JVM restoration time in DefaultLifecycleProcessor #31252
  • ValueLoaderEntryProcessor should not be created for every call to JCacheCache#get #31250
  • Introduce initialize() method in AbstractRoutingDataSource and AbstractRoutingConnectionFactory #31248
  • Add MappingJackson2MessageConverter constructors that accept an ObjectMapper #31234
  • Eliminate synchronized block to avoid thread pinning in SingletonSupplier #31227
  • Add OuputStream BodyInserter #31184
  • SseEmitter should format a multiline String #30965
  • Suppress logging from HandlerMapping when used for Spring Security's mvcRequestMatcher #30349
  • Lenient handling of unencoded URIs in ForwardedHeaderTransformer #30137
  • Support DispatcherType.INCLUDE in DefaultServletHttpRequestHandler #30113
  • Introduce caching for functional routing #29985
  • Log CglibAopProxy errors as WARN instead of INFO #29773
  • Add CharBufferDecoder #29741
  • Provide the HttpRequest on the ClientResponse interface #28397
  • Batch update return generated keys #28132
  • Allow filters to be registered with MockMvc for particular dispatcher types #27717
  • Introduce class-level execution phases for @Sql #27285
  • Add default methods to MailSender and JavaMailSender as appropriate #23651
  • Remove all ApplicationListenerMethodAdapters on context close [SPR-17456] #21988
  • Handle STOMP messages from client session in order #21798
  • Call Lifecycle.stop() for already started beans on failed refresh [SPR-15468] #20028

🐞 Bug Fixes

  • Fix regression in JmsAccessor#setSessionAcknowledgeMode #31328
  • JdbcClient does not update KeyHolder when using positional parameters #31297
  • AOT bean registrations miss reflection hints on public methods #31293
  • DefaultFetchSpec should not buffer results in temporary list buffers #31282
  • Missing reflection hint on Publisher for bean destroy methods support #31278
  • Missing reflection hint on Eclipse FileLocator #31271
  • Missing resource hint for spring.properties #31270
  • Missing reflection hints on Kotlin classes for KotlinDetector #31269
  • Missing reflection hint on MonetaryAmount in conversion service #31266
  • Missing reflection hints for jakarta.inject classes #31259
  • ResponseBodyEmitter ignores calls to complete but remains open after JSON write error while sending #30687
  • The task in AsyncTaskExecutor throws an exception before execution, and ControllerAdvice will be called twice. #30232
  • Suppress deprecation warning for AOT-generated code that refers to a deprecated member #29597
  • Avoid duplicate ApplicationListener firing (proxy vs. target) #28322
  • JCacheCache#putIfAbsent is not atomic #21591

πŸ“” Documentation

  • Add Search in all Spring Docs #31290
  • Add missing period in RestClient documentation #31237
  • Improve wording in Javadoc for @Autowired #31235
  • Clarify ClientHttpRequestInterceptor#intercept() must close response if it throws exception after receiving the response #29751
  • Create migration guide from RestTemplate to RestClient #23269

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.12.0-RC1 #31398
  • Upgrade to Reactor 2023.0.0-RC1 #31406

❀️ Contributors

Thank you to all the contributors who worked on this release:

@JakobFels, @OnlyWick, @StellarStrategist, @aahlenst, @alidandach, @bergander, @bramhaag, @chaewon121, @ctailor2, @e-freni, @esperar, @ghainesii, @hpoettker, @izeye, @joakimmohn, @kang-hl, @kriegaex, @kzander91, @markusheiden, @mdeinum, @qpakzk, @quaff, @ralph-riedel, @runeflobakk, @rwinch, @sephiroth-j, @shin-mallang, @violetbeach, and @vpavic

spring-framework - v6.0.13

Published by spring-builds about 1 year ago

⭐ New Features

  • Improve diagnostics for negative repeated text count in SpEL #31342
  • Improve diagnostics when repeated text size calculation results in overflow in SpEL #31341
  • UnknownContentTypeException is not Serializable #31283
  • Reintroduce FastClass in CGLIB class names for @Configuration classes #31272

🐞 Bug Fixes

  • HibernateJpaDialect and HibernateExceptionTranslator throw SQLExceptionTranslator-provided exception instead of returning it #31409
  • AnnotationScanner scanning leads to StackOverflowError with recursive annotation #31400
  • NamedParameterJdbcTemplate throws unexpected exception for null query #31391
  • HTTP server exchange observations have incorrect UNKNOWN status tag if the client disconnected #31388
  • Breaking change from 6.0.11 to 6.0.12 if you expect query parameters in @RequestBody #31327
  • SpEL's CompoundExpression.toStringAST() omits ? for null-safe navigation #31326
  • ConcurrentLruCache no longer supports capacity = 0 #31317
  • Using R2dbc transactional and non transactional on a database connection pool will fail for Oracle. #31268
  • AOT-generated code no longer set bean class for beans created from a @Bean method #31242
  • CGLIB proxy classes are no longer cached properly #31238
  • Illegal reflective access in ContextOverridingClassLoader.isEligibleForOverriding #31232
  • Fix RuntimeHintsPredicates matching rules for public/declared elements #31224
  • MultipartParser should respect read position #31110
  • WebClient reports 'Host is not specified' for URI with hostname and port, but without scheme #31033
  • R2DBC Connection is closed during transaction when using TransactionAwareConnectionFactoryProxy #28133
  • SpEL cannot evaluate or compile expression with null-safe void method invocation #27421
  • LazyResolutionMessage does not implement proper toString #21265

πŸ“” Documentation

  • Document Kotlin declaration site variance subtleties #31370
  • Add missing conversionService field in doc example #31330
  • Clarify documentation on Spring Web MVC pattern comparison #31294
  • Improved documentation for MethodParameter#getAnnotatedElement #30397
  • Javadoc for BeanPropertyRowMapper.getColumnValue(ResultSet, int, Class) is inconsistent with code #29285
  • Referencing a @Bean method in a @Configuration class' @PostConstruct method leads to circular reference #27876
  • Incorrect reference information about CGLIB supported method visibility #25001
  • Clarify documentation for @Transactional on interfaces #23538

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.10.12 #31404
  • Upgrade to Reactor 2022.0.12 #31405

❀️ Contributors

Thank you to all the contributors who worked on this release:

@jihuayu and @wfouche

spring-framework - v6.1.0-M5

Published by spring-builds about 1 year ago

⭐ New Features

  • JdbcClient should reject a List as the parameter of the IN clause of an SQL statement when using positional parameters #31215
  • Support one-time @Scheduled tasks #31211
  • Deprecate JOptCommandLinePropertySource #31207
  • Use MergedAnnotations API directly in AnnotationBeanNameGenerator where possible #31203
  • Introduce MethodInvoker API for TestExecutionListeners #31199
  • Use Method#isDefault to find default methods in interfaces #31197
  • Refine logic to release WebSocket ByteBuffer via Callback with Jetty 12 #31182
  • Make ReactorClientHttpConnector lifecycle-aware #31180
  • Make ReactorResourceFactory lifecycle-aware #31178
  • Consolidate HTTP Interface client support for MultipartFile and @RequestPart #31164
  • Register reflection hints for @TestPropertySource factory #31160
  • Introduce TaskDecorator variant for Context Propagation #31130
  • Replace Reactive awaitSingle() usages by the Mono variant #31127
  • Clarify and log that return value of HandlerMethod is ignored if reason of @ResponseStatus present #31121
  • Instrument RestClient for Observability #31114
  • Attempt to reset Servlet response before calling ExceptionHandlers #31104
  • Raise log level to warn when configuration class enhancement cannot apply due to circular reference #31102
  • Refine "checkpoint on refresh" error handling #31096
  • Deprecate convention-based @Component stereotype names in favor of @AliasFor #31093
  • Reinstate support for legacy JSR-250 @javax.annotation.ManagedBean and JSR-330 @javax.inject.Named annotations #31090
  • Look up @Component stereotype names using @AliasFor semantics #31089
  • Add @Nullable to value in param() methods in JdbcClient #31084
  • Ensure direct @PropertySource annotations override meta-annotations #31074
  • Introduce var-args params() method in JdbcClient's StatementSpec #31070
  • Introduce overloaded methods in JdbcTestUtils that accept JdbcClient instead of JdbcOperations #31066
  • Revise JdbcTestUtils method signatures to accept JdbcOperations instead of JdbcTemplate #31065
  • Adapt native support for Hibernate 6.3.0 bytecode provider changes #31051
  • Move blocking writeResource operation to boundedElastic #30928
  • Move blocking view resolution to boundedElastic #30903
  • Support parameter injection in @BeforeTransaction/@AfterTransaction methods #30736
  • Introduce getContentAsString() in ContentCachingRequestWrapper #30709
  • Support configuring Jetty WebSocket server parameters #30344
  • Optimize InlineMap and InlineList in SpEL #30251
  • Update Pointcuts to match getter methods by also excluding void return type #30068
  • Improve attribute handling in RequestPredicates #30028
  • Add support for JSR-330 and Jakarta @Inject for autowiring test constructors #29851
  • Optimize initial size in ContentCachingRequestWrapper when contentCacheLimit set #29775
  • Optimize Hibernate native footprint by making ByteBuddy unreachable #29549
  • Execute preflight checks before interceptors #29509
  • Use Arrays.hashCode(...) in ObjectUtils #29051
  • Improve toString representation of complex parameters in SimpleKey #27670
  • Propagate CoroutineContext in CoWebFilter #27522
  • Add ParameterNamesModule to "well known" jackson modules #27511
  • Optimize for single TransactionSynchronization #27335
  • Improve performance of CompositePropertySource#getPropertyNames #27236
  • Avoid calling executeBatch() with 0 batch size #27154
  • Add maxAttempts to ExponentialBackOff #27071
  • Spring Webflux: CoRouterFunctionDsl should expose the used CoroutineContext #27010
  • spring-webflux filters don't pass CoroutineContext #26977
  • Support declarative ContextCustomizer registration in the TestContext framework #26148
  • Improve SpEL inline collection caching #25921
  • Use Comparable instead of dedicated implementations #25478
  • Support method injection when @Autowired(require=false) is used on mixed nullability args #24773
  • Add factory method to create a NamedThreadLocal with an initial value #24705
  • CglibAopProxy: Skip non-overridden methods of Object.class as those which for sure have no advice #24649
  • Add conversion support for Pattern/Regex #24311
  • Support quoted identifiers in SimpleJdbcInsert #24013
  • Add composite for TaskDecorator #23692
  • Spring AOP is not compatible with Kotlin Coroutines #22462
  • Added Basic Authorization for UrlResource #1822
  • Allow component name to be specified in @ControllerAdvice [SPR-16566] #21108
  • MethodValidationInterceptor support for Mono and Flux method parameters #20781
  • Support validating collection of objects on web controller method #16917

🐞 Bug Fixes

  • AOT check on a bean definition with an instance supplier is not consistent #31200
  • Pass correct SqlParameterSource to NamedParameterJdbcTemplate in DefaultJdbcClient #31195
  • Various methods in SimpleJdbcInsert prevent method chaining #31177
  • Client observations URI template missing when using RestTemplateAdapter #31144
  • Validator resolution can no longer be lazy #31137
  • Make the JdbcClient method update(KeyHolder generatedKeyHolder) work with positional parameters #31122
  • AOT processing fails for @ConfigurationProperties class without default constructor #31117
  • Built-in method validation does not work with Boot auto-configuration #31082

πŸ“” Documentation

  • Stop referring to JDO and outdated JDBC versions in documentation #31183
  • WebFlux blocking configuration documentation fix #31150
  • typo in "such as" #31145
  • Fix typo in reference documentation #31135
  • Document RestClient in the reference manual #30826
  • Add example of buffering with WebClient to the reference documentation #28758

πŸ”¨ Dependency Upgrades

  • Upgrade to Context Propagation 1.1.0-M4 #31220
  • Upgrade to CRaC 1.4.0 #31190
  • Upgrade to Jetty 12 #30698
  • Upgrade to Kotlin 1.9.10 #31106
  • Upgrade to Kotlin Coroutines 1.7.3 #31108
  • Upgrade to Kotlin Serialization 1.6.0 #31107
  • Upgrade to Micrometer 1.12.0-M3 #31218
  • Upgrade to Reactor 2023.0.0-M3 #31219

❀️ Contributors

Thank you to all the contributors who worked on this release:

@70825, @Anton-Vasilev, @Arooba-git, @FlorianLehmann, @Li0n13, @Sam-Kruglov, @SammyVimes, @Shawyeok, @TAKETODAY, @alecmus, @annabuyevich, @aooohan, @asgh, @bdshadow, @chenqimiao, @enimiste, @garyrussell, @hzmpay, @izeye, @kilink, @kitaisreal, @liaozan, @making, @marschall, @mdeinum, @midumitrescu, @quaff, @rwinch, @ryanrupp, @stsypanov, @tianshuang, @ttddyy, @valfirst, @wind57, @x-x-z, and @yuzawa-san

spring-framework - v6.0.12

Published by spring-builds about 1 year ago

⭐ New Features

  • ArithmeticException: long overflow on @Scheduled(fixedDelay = Long.MAX_VALUE, timeUnit = TimeUnit.MINUTES) #31210
  • Polish resolveArgument method in RequestResponseBodyMethodProcessor #31175
  • Update logging level in BeanValidationBeanRegistrationAotProcessor for validation exceptions #31147
  • Skip searching of nonexistent directory in PathMatchingResourcePatternResolver #31111
  • Add @Nullable to argValue in doSetValue() in Argument[Type]PreparedStatementSetter #31086
  • Optimize whitespace checks in StringUtils #31067
  • Missing proxy hint when using a simple JPARepository #31050
  • Register an override for an existing adapter in ReactiveAdapterRegistry #31047
  • DefaultListableBeanFactory#getBeanNamesForType does not take target type into account for FactoryBean resolution #30987
  • Give spring-core access to org.jboss.vfs for VfsUtils support on WildFly #30973
  • Use readNBytes in StringHttpMessageConverter when contentLength is available #30942
  • Skip array sort when the length of array not greater than 1 #30934
  • Avoid flushing for each SseEventBuilder entry #30912
  • Make DefaultGenerationContext(DefaultGenerationContext, String) constructor protected #30895
  • Add missing @Nullable annotations in AbstractResourceResolver subclasses in Spring MVC #30893
  • Performance bottlenecks while creating scoped bean instances #30883
  • Make bean initialization deterministic for multiple @Autowired methods on same bean class #30359
  • Optimize ClassUtils#getMostSpecificMethod #30272
  • Missing native hints for Hibernate Native Query proxy #29603
  • Check exception cause for @PropertySource(ignoreResourceNotFound) support #22276
  • Align validation metadata handling in PayloadMethodArgumentResolver #21852

🐞 Bug Fixes

  • Spring Boot fails with "does not reside in the file system: manifoldclass://622488023/.../" #31216
  • WebClientResponseException.getResponseBodyAs throws exception instead of returning null for empty body #31179
  • Possible classloader leak through incomplete clearing of annotation caches #31170
  • Spring LogFactory implementation deviates from original Apache LogFactory in terms of abstract method declarations #31166
  • graalvm native image feature PreComputeFieldFeature disable all netty native transports #31141
  • Bean injection fails due to nullSafeConciseToString() invoking isEmpty() on a Map/Collection proxy #31138
  • R2DBC: Skip release connection after nested with existing transaction #31133
  • SpelExpressionParser throws IllegalStateException instead of ParseException for invalid expression #31097
  • @DynamicPropertySource in @Nested test class cannot override dynamic properties from enclosing class #31083
  • Spring Boot WebFlux validation of invalid inputs #31045
  • TransactionalApplicationListenerMethodAdapter should find @TransactionalEventListener on target class method #31034
  • ScheduledAnnotationBeanPostProcessor: graceful shutdown should not interrupt currently running jobs #31019
  • TypeBootstrapContext constructor not called in custom types with Hibernate 6 #30924
  • MethodIntrospector.selectMethods(?) fails to find methods in case of special bridge method arrangement #30906
  • Spring webflux @ModelAttribute annotated methods not working with kotlin suspend methods #30894
  • Support Kotlin Serialization custom serializers #30870
  • Test AOT processing fails if a feature name prefix is reused #30861
  • NoUniqueBeanDefinitionException should make sure beansNameFound is serializable #29753
  • Permgen memory leak due to ClassInfo caching in java.beans.Introspector on JDK 11/17 #27781
  • Model.set() Kotlin extension method does not allow null value #27115
  • Allow PropertySourcesPlaceholderConfigurer subclass to customize PropertyResolver #26761

πŸ“” Documentation

  • Fix documentation: Passing in Lists of Values for IN Clause does not work with JdbcTemplate #31228
  • Fix typo in comment in XML configuration example #31194
  • Document some non-nullable Kotlin extensions can throw NoSuchElementException #31189
  • Improve documentation on applicability of mapped interceptors with the Spring MVC config #31185
  • Add Javadoc since tags in FilePatternResourceHintsRegistrar #31174
  • Refine CORS documentation for wildcard processing #31143
  • Fix invalid type name in RSocket section of the reference documentation #31091
  • @Transactional on package-private/protected methods for class-based proxies #31057
  • Change Kotlin Any to be a nullable type in AOP refdoc examples #31015
  • Versioned redirect seems to all redirect to "current" version #31009
  • Javadoc for PathPatternParser.defaultInstance is outdated #30976
  • Clarify R2DBC ConnectionAccessor and DatabasePopulator exception declarations #30932
  • Document purpose of name attribute in @PropertySource #30195
  • Document how to configure the ApplicationEventMulticaster used by the ApplicationContext #29996
  • Document inference of destroy methods with Java config more prominently #29546
  • Revise FilePatternResourceHintsRegistrar API and improve documentation #29161
  • Document how to configure the cache infrastructure globally #28250
  • SpEL T() operator not able to locate user types with default StandardTypeLocator configuration #26253
  • Propagation REQUIRES_NEW may cause connection pool deadlock #26250
  • Modify DefaultMessageListenerContainer javadoc #25503
  • Doc: Avoid deadlock in @PostConstruct through SmartInitializingSingleton or ContextRefreshedEvent #25074
  • Document expected behavior of a method annotated with multiple @Scheduled annotations #23959
  • Improve documentation for FactoryBean's getObject automatic call through @ManagedResource [SPR-17139] #21676
  • Injecting EntityManagers through constructor injection (and at non-@PersistenceContext injection points in general) [SPR-10443] #15076

πŸ”¨ Dependency Upgrades

  • Upgrade to Context Propagation 1.0.5 #31223
  • Upgrade to Micrometer 1.10.11 #31221
  • Upgrade to Reactor 2022.0.11 #31222

❀️ Contributors

Thank you to all the contributors who worked on this release:

@1zg12, @aahlenst, @christophejan, @gnagy, @izeye, @jongwooo, @kilink, @marschall, @michaldo, @perlun, @pstrsr, @quaff, @remeio, @rwinch, @shin-mallang, and @zakaria-shahen

Package Rankings
Top 0.24% on Repo1.maven.org
Top 3.57% on Proxy.golang.org
Badges
Extracted from project README's
Build Status Revved up by Develocity