Skip to content

fix(deps): update spring core to v7 (major)#2109

Open
renovate[bot] wants to merge 2 commits into
masterfrom
renovate/major-spring-core
Open

fix(deps): update spring core to v7 (major)#2109
renovate[bot] wants to merge 2 commits into
masterfrom
renovate/major-spring-core

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Nov 15, 2025

This PR contains the following updates:

Package Change Age Confidence
org.springframework:spring-jdbc 6.2.177.0.6 age confidence
org.springframework:spring-tx 6.2.177.0.6 age confidence
org.springframework:spring-test 6.2.177.0.6 age confidence
org.springframework:spring-context 6.2.177.0.6 age confidence

Release Notes

spring-projects/spring-framework (org.springframework:spring-jdbc)

v7.0.6

Compare Source

⚠️ Attention Required

  • Log warning when default context configuration is ignored within test class hierarchies #​36390
  • Ignore flush calls on ServletServerHttpResponse body outputstream #​36385

⭐ New Features

  • Leverage ResourceHandlerUtils in ScriptTemplateView #​36458
  • Restore ScriptTemplateViewTests #​36456
  • Fix log message in ConfigurationClassBeanDefinitionReader #​36453
  • DefaultResponseErrorHandler - setMessageConverters() not called via RestClient #​36434
  • Resolve context initializers only once in AbstractTestContextBootstrapper #​36430
  • Invoke resolveContextLoader() only once in AbstractTestContextBootstrapper #​36425
  • Further align synthesized annotation toString() with modern JDKs #​36417
  • Introduce setDefaultCharset() in AbstractResourceBasedMessageSource #​36413
  • Support for JPA 4.0 flush mode "explicit" #​36401
  • Support application-wide defaultHtmlEscape setting in WebFlux RequestContext #​36400
  • Support Predicate<RequestPath>> in path API version resolver #​36398
  • Avoid duplicate flushes in HttpMessageConverter implementations #​36383
  • Add support for non-flushing OutputStream to StreamUtils #​36382
  • Make it easier to get InputStream from RestClient #​36380
  • RuntimeHintsWriter should comply with reachability-metadata-schema-v1.2.0.json #​36379
  • Make it easier to create custom HttpExchangeAdapter #​36374
  • Improve ResourceHttpMessageConverter target type support #​36368
  • org.springframework.test.web.servlet.assertj.AbstractHttpServletResponseAssert#headers case sensitivity #​36349
  • Allow registering serialized lambda metadata through RuntimeHints #​36339
  • Refactor calculateHashCode in RequestMappingInfo #​36325

🐞 Bug Fixes

  • MetadataReader misses enclosing class name for Kotlin nested classes with Java 24+ #​36451
  • Guard against invalid id/event values in Server Sent Events #​36440
  • Component scanning fails against non-loadable annotation type with enum array on Java 25 #​36432
  • Duplicate ServletServerHttpRequest headers #​36418
  • Incomplete debug message in ConfigurationClassBeanDefinitionReader #​36410
  • Inconsistent ApplicationEventMulticaster state after removing ApplicationListener implemented by FactoryBean #​36404
  • Propagate max frame length to WebSocket session #​36370
  • Graceful shutdown of SimpleAsyncTaskExecutor #​36362
  • Duplicate response headers with ResponseEntity<Mono<T>> (or Kotlin suspend function) controller method #​36357
  • HttpServiceProxyFactory returns LinkedHashMap instead of target type for method with generic return type #​36326
  • HttpMediaTypeException thrown when calculating compatible media types #​36300

📔 Documentation

  • Document FullyQualifiedConfigurationBeanNameGenerator in Javadoc and reference docs #​36455
  • Document @Fallback alongside Primary in the reference manual and @Bean Javadoc #​36439
  • Fix links to UriComponentsBuilder and polish examples #​36403
  • Emphasize @Configuration classes over XML and Groovy in testing chapter #​36393
  • Document tips to avoid issues with ignored default context configuration in tests #​36392
  • Polish SpEL operator examples in reference docs #​36367
  • Add programmatic configuration tabs in the transactional refdoc #​36323
  • Document registration recommendations for BeanPostProcessor and BeanFactoryPostProcessor #​34964

🔨 Dependency Upgrades

❤️ Contributors

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

@​AgilAghamirzayev, @​aavoronin93, @​cetf9h, @​froggy0m0, @​gbouwen, @​husseinvr97, @​jisub-dev, @​ngocnhan-tran1996, @​siom79, and @​xxxxxxjun

v7.0.5

⚠️ Attention Required

  • Optimize request and response header handling in Spring MVC #​36334

⭐ New Features

  • Consistent adaptation of HTTP headers on Servlet responses #​36343
  • Copy methodAnnotations in MethodParameter copy constructor #​36342
  • Improve performance of validation groups determination in WebFlux #​36336
  • Reuse AnnotatedMethod annotation cache in derived instances #​36322
  • Optimize the addition of a charset to the MediaType in AbstractHttpMessageConverter #​36320
  • Optimize MediaType(MediaType, Charset) constructor #​36318
  • Detect all common size exceptions from Tomcat and Commons FileUpload 2.x #​36317
  • Consistently support @Autowired as a meta-annotation #​36315
  • Avoid duplicate required attribute lookup for @Autowired annotations #​36314
  • Cache @ResponseBody presence per controller class in RequestResponseBodyMethodProcessor #​36311

🐞 Bug Fixes

  • ResolvableType#getGenerics() breaks serialization #​36346
  • DefaultHttpMessageConverters not adding provided configurer #​36332
  • Restore early MessageConsumer creation for temporary queue #​36321
  • Multipart upload leak on client abort (ByteBuf.release() not called) #​36262

📔 Documentation

  • Document that SpEL expressions using Optional with null-safe and Elvis operators are not compilable #​36331
  • Improve documentation of baseline API version to emphasize version must be supported #​36316
  • Stop referring to obsolete ListenableFuture in documentation #​36313
  • Stop referring to standard Java features as "Java 8" features in documentation #​36310

❤️ Contributors

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

@​Niravil and @​TAKETODAY

v7.0.4

⭐ New Features

  • Cache method annotations in MethodParameter and AnnotatedMethod #​36307
  • Consistently support @Lazy as a meta-annotation at arbitrary depths #​36306
  • Consistently support @Validated as a meta-annotation at arbitrary depths #​36305
  • Let developers disable default registrations in HttpMessageConverters #​36303
  • Log which HandlerInterceptor threw the exception #​36281
  • Improve performance of hashcode calculations for request mappings #​36279
  • Improve performance of HandlerMethod bean lookup #​36278
  • Improve performance of version mapping #​36276
  • Improve performance of single pattern request mappings #​36275
  • Improve performance of validation groups determination #​36274
  • Add setPackagesToScan configuration method to LocalEntityManagerFactoryBean #​36270
  • Remove outdated GraalVM substitution #​36257
  • Introduce beforeRetry callback with RetryState argument #​36245
  • Optimize NamedParameterUtils#buildValueArray by lazily fetching SqlParameter #​36230
  • Allow customization of the ProxyFactory in HttpServiceProxyFactory used to create HTTP service proxies #​36225
  • Consistently close streams through try-with-resources in FileCopyUtils #​36223
  • Use Java Files utilities in FileCopyUtils #​36221
  • SqlBinaryValue and SqlCharacterValue should support InputStream content with undetermined length #​36219
  • Support JtaTransactionManager and SpringBeanContainer configuration on HibernateJpaVendorAdapter #​36216
  • Add TaskCallback/Callable/Runnable wrapper for retryable tasks #​36208
  • Refine YamlProcessor to allow different empty values #​36207
  • Anticipate fixing Kotlin 2.3 compilation warning #​36203
  • Allow YAML processors to create a flattened map with nulls included #​36197
  • Use Reader.transferTo in FileCopyUtils #​36196
  • DataBufferUtils.write() with NettyDataBuffer on JDK 25 hangs indefinitely #​36184
  • Make SendToMethodReturnValueHandler and SubscriptionMethodReturnValueHandler customizable, to allow for pass-through of message headers #​36179
  • Introduce RestClient.ResponseSpec#requiredBody #​36173
  • Make scope fully configurable in BeanRegistry/BeanRegistrar #​36171
  • ConcurrencyThrottleSupport and thread interruption #​36167
  • Add overloaded sendAndReceive methods to JmsTemplate to use explicit response queue #​36162
  • WebClient (Reactor) attributes on Netty channel do not clear after connection release #​36158
  • Support HttpEntity on ContentRequestMatchers.multipartData #​36154
  • Reintroduce WebLogicJtaTransactionManager in Spring Framework 6.2.x #​36151
  • Back-off for DefaultMessageListenerContainer is not applied consistently in case of listener setup failure #​36143
  • Early support for JPA 4.0 EntityAgent (autowiring a shared proxy) #​36025
  • Early compatibility with JPA 4.0 and Hibernate ORM 8.0 #​35705

🐞 Bug Fixes

  • Resolved HttpEntity Controller argument does not reflect mutated HTTP headers #​36298
  • Avoid lock congestion in ConcurrentReferenceHashMap #​36293
  • AbstractMessageConverter does not support wildcards in supported MIME types #​36285
  • Make LocalEntityManagerFactoryBean#setDataSource work on Hibernate as well as EclipseLink #​36271
  • StompBrokerRelayMessageHandler fails to restart due to test context pausing #​36266
  • Deadlock might occur when calling System.exit on startup (against multiple shutdown hooks) #​36260
  • Missing resource hint for BeanRegistrar implementing ImportAware #​36242
  • Inconsistent behavior with @Retryable on annotated interfaces #​36233
  • Netty4HeadersAdapter.remove returns empty list instead of null for non-existing key #​36226
  • Generic type in AsyncTaskExecutor.submit(Callable) should be @Nullable #​36191
  • EclipseLinkConnectionHandle can fail against transaction isolation race condition #​36165

📔 Documentation

  • Remove obsolete code in Redirecting to a resource section #​36284
  • Fix formatting in Web MVC HTTP Message Conversion documentation #​36250
  • Remove obsolete doc for spring.context.annotated-bean-reader.create #​36241
  • Document @SpringExtensionConfig in the reference manual #​36240
  • Fix JSON syntax in STOMP overview documentation #​36229
  • Revise documentation on JSR-330 support in the reference manual #​36222
  • Fix links to JUnit User Guide #​36217
  • Corrected the definition of coroutines #​36209
  • Fix LocalContainerEntityManagerFactoryBean#setPersistenceUnitName javadoc #​36205
  • Update documentation on trailing slash handling where type-level @GetMapping("/base") is combined with method level @GetMapping("/") #​36198
  • Update documentation on the MediaType used for ProblemDetail #​36192
  • Extract DispatcherServlet snippets #​36175
  • Replace getErrors() with getBindingResult() in examples #​36170
  • Refine CORS documentation to match latest changes #​36156

🔨 Dependency Upgrades

❤️ Contributors

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

@​Ivarz, @​catturtle123, @​chschu, @​deejay1, @​dingqianwen, @​dungdm93, @​furaizi, @​izeye, @​kchung1995, @​kilink, @​msridhar, @​ngocnhan-tran1996, @​pgoslatara, @​philwebb, @​pisek, and @​shub-est

v7.0.3

⚠️ Attention Required

  • Introduce Spring property to disable context pausing for tests #​36117
  • Avoid unnecessary pausing of application contexts in the TestContext framework #​36044

⭐ New Features

  • DisconnectedClientHelper should detect presence of RestClientException and WebClientException separately #​36141
  • Deprecate PagedListHolder and PropertyComparator for removal #​36139
  • Add DataAccessException and MessagingException to the excluded outermost exceptions in DisconnectedClientHelper #​36134
  • Support property placeholders in HTTP service registry #​36126
  • Retain original requested bean class for SpringContainedBean #​36116
  • Add task rejection support to SyncTaskExecutor's concurrency throttle #​36114
  • Precompute PropertyDescriptor array in SimpleBeanInfoFactory #​36112
  • Add option for @ConcurrencyLimit to throw rejection exception #​36109
  • Support HttpComponents 5.6 #​36100
  • Fix double encoding in DefaultApiVersionInserter #​36097
  • Optimize single-char wildcard path matching performance #​36095
  • Allow WebFlux ApiVersionResolver to return a Mono #​36084
  • Configure HttpMessageConverters as a list #​36083
  • HTTP Interface with an @RequestBody Object method parameter should use class of actual value #​36078
  • Consistently declare @Nullable on parameter in equals() implementations #​36075
  • Support listener registration for @Transactional triggered method rollbacks #​36073
  • Introduce generalized MethodFailureEvent for use in EventPublicationInterceptor #​36072
  • Avoid duplicate flushes in StringHttpMessageConverter #​36065
  • When no API version is provided, static resources fail to load #​36059
  • When no API version is provided, /error requests also fail. #​36058
  • Declare TaskCallback return value as potentially nullable #​36057
  • Fix case-insensitive semantics for LinkedCaseInsensitiveMap entrySet #​36056
  • Update to NullAway 0.12.15 and fix new warnings #​36054
  • Provide alternative to execute(Retryable) which avoids RetryException in favor of rethrowing the last original RuntimeException #​36052
  • Simplify TransactionalOperator.executeAndAwait by removing Optional #​36039
  • Deprecated MockMvcClientHttpRequestFactory is required for tests with HTTP service interface proxy #​35989
  • Introduce Jackson XML codecs #​35752
  • Support listener registration for @Retryable triggered retry executions #​35382

🐞 Bug Fixes

  • Fix SmartFactoryBean type matching for ResolvableType.NONE #​36123
  • AbstractMessageSendingTemplate ignores headers in convertAndSend() variant #​36120
  • JmsClient.sendAndReceive() fails if headers are included #​36118
  • PropertyDescriptorUtils does not reliably resolve overloaded write methods #​36113
  • Fix context class resolution for nested types in AbstractJacksonHttpMessageConverter #​36111
  • DefaultApiVersionInserter encodes already encoded URI #​36080
  • ConverterFactory nullness mismatch with Converter #​36063
  • WiretapConnector leaks data buffers when response body not consumed #​36050
  • CompilationException should not use -1 for line or column numbers when they are unknown #​36041
  • org.springframework.core.test.tools.TestCompiler.Errors should handle case where warnings are turned into errors #​36037
  • UriComponentsBuilder loses the fragment when it consists of only a single character #​36029
  • Parameter names of the handler method are null in HandlerInterceptor::preHandle during first invocation of an endpoint #​36024
  • PropertyDescriptorUtils does not reliably resolve read/write methods in type hierarchies with generics #​36019
  • Illegal reflection use against Hibernate Validator 9 on module path #​36012

📔 Documentation

  • Clarify unversioned handler matching precedence #​36125
  • Clarify meaning of maxAttempts in FixedBackOff vs. maxRetries in RetryPolicy #​36119
  • Polishing AOT cache documentation #​36108
  • Upgrade Antora dependencies #​36105
  • Modernize the DispatcherServlet Locale documentation #​36099
  • Fix Kotlin example in Multipart Content #​36094
  • Remove @EnableWebFlux from documentation code snippets #​36091
  • Fix Kotlin example in CORS and Functional Endpoints references #​36089
  • Extract remaining WebMVC configuration snippets #​36088
  • Remove the "Other Web Frameworks" documentation #​36086
  • Fix reference links in Configuration page #​36079
  • Document HttpHeaders#toSingleValueMap() case-sensitive behavior #​36070
  • Correct encode Javadoc for UriComponents and UriComponentsBuilder #​36040
  • Fix typos and grammar #​36022
  • Custom @ExceptionHandler silently ignored when spring.mvc.problemdetails.enabled=true without @Order #​35982
  • Document how to discard response body with WebTestClient #​35953
  • Modernize the view technologies section #​35450
  • Remove JavaScript/Kotlin from ScriptEngine documentation #​27919

🔨 Dependency Upgrades

❤️ Contributors

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

@​JKaplanEmpty-Nes, @​MukjepScarlet, @​TerryTaoYY, @​haydenrear, @​jhan0121, @​jher235, @​marcphilipp, @​mipo256, @​msridhar, @​ngocnhan-tran1996, @​parkhojeong, @​philipbolting, @​playous, @​quaff, @​thelightway24, and @​xyraclius

v7.0.2

⭐ New Features

  • Avoid unnecessary list creation and processing in AbstractTestContextBootstrapper #​35995
  • AbstractTestContextBootstrapper should resolve ContextLoader only once #​35994
  • Log RetryException for @Retryable methods #​35983
  • Consistently stop already started Lifecycle beans on cancelled refresh #​35964
  • Support timeouts in @Retryable and RetryPolicy #​35963
  • Use == instead of instanceof for primitive array type checks #​35962
  • Introduce MultiValueMapCollector for use with streams #​35958
  • Avoid package cycle caused by use of UriComponentsBuilder in ServletServerHttpRequest #​35952
  • Target type in Converter interface should be @Nullable #​35947
  • Provide access to attempt count in RetryListener as well as callbacks for the initial attempt #​35940
  • DefaultHandshakeHandler should not log client faults on error level #​35930
  • Log warning when meta-annotation is ignored due to types not present in classpath #​35927
  • Revise ApplicationContext#getId() nullability to non-null #​35925
  • Use concurrent set behind reactive TransactionSynchronizationManager#registerSynchronization #​35921
  • Refine AbstractKotlinSerializationHttpMessageConverter#canWrite #​35920
  • Register bean dependency for Optional injection point as well #​35919
  • Change canRead/canWrite overrides to Class ones in AbstractSmartHttpMessageConverter #​35916
  • Do not make HttpHeaders read-only in HttpEntity #​35888
  • Add WebFlux SSE support with GSON #​35884
  • Different ReactorNettyWebSocketSession call getId() may return the same value #​35883
  • Refine nullability of Assert#noNullElements #​35868
  • Allow configuring default maxIdleTime on InMemoryWebSessionStore. #​35866
  • Refine BindingReflectionHintsRegistrar with ObjectToObjectConverter hints #​35847
  • Add resetCaches() method to general CacheManager interface #​35845
  • Enhance handleTypeMismatch error message in ResponseEntityExceptionHandler #​35837
  • Add support for package-private BeanRegistrar in Spring AOT generated code #​35803
  • Use ExtendedServletRequestDataBinder/ExtendedWebExchangeDataBinder for functional request binding #​35800
  • Expose Collection on FragmentsRendering to facilitate Unit Tests #​35775
  • Improve i18n-support for NoResourceFoundException #​35758
  • Cache resolved singleton beans in injected Provider instance #​35373

🐞 Bug Fixes

  • ContextConfigurationAttributes(Class) constructor incorrectly sets inheritLocations to false #​36000
  • NullPointerException thrown from JdkClientHttpRequestFactory for null request header value #​35996
  • State inconsistency in LazyConnectionDataSourceProxy when connection settings fail #​35980
  • SubscriberInputStream#resume misuses parked thread reference #​35978
  • Shared EntityManager returned by AbstractEntityManagerFactoryBean cannot be advised by AspectJ interceptor #​35974
  • RestClient cannot make HEAD requests when the response declares gzip Content-Encoding #​35966
  • ServerRequestObservationContext(s) miss Propagator.Getter method implementation #​35965
  • Jackson used instead of kotlinx.serialization for more complex types #​35960
  • Strong locking in ConcurrentReferenceHashMap#computeIfAbsent may cause context initialisation deadlock #​35944
  • BridgeMethodResolver change in 6.2.13 breaks Spring Data entity introspection #​35936
  • DefaultMessageListenerContainer does not clear Session and MessageConsumer for paused invokers #​35932
  • Tighten cacheable decision behind @Lazy injection point #​35917
  • AOT-generated bean definition does not consider name of RuntimeBeanReference using name and type #​35913
  • Accidental fallback match for Collection-type beans due to @Bean-level qualifier annotation #​35908
  • SingletonSupplier should be defensive against singletonInstance/initialized visibility mismatch #​35905
  • SortedResourcesFactoryBean does not accept non-existent resources anymore #​35895
  • Support reading unresolvable types in AbstractJacksonHttpMessageConverter #​35889
  • Refine Kotlin Serialization codec type checks #​35885
  • UrlHandlerFilter also removes query parameters and fragment when using HTTP redirect #​35873
  • Fix handling of ServerSentEvent with Jackson encoder #​35872
  • @EnableResilientMethods does not participate in globally enforced target class proxying #​35863
  • RestTestClient can leak HTTP connections when no body expectations are performed #​35784
  • Use provided ReactiveAdapterRegistry in BindingContext constructor #​35771
  • PathMatchingResourcePatternResolver fails with URI in JAR manifest Class-Path entries #​35682

📔 Documentation

  • Correct link to Reactive Libraries in reference docs #​35970
  • Document that annotations are ignored if attributes reference types not present in the classpath #​35959
  • Remove JUnit 4 based meta-annotation example #​35903
  • Refer to "Spring Tools" instead of "Spring Tools for Eclipse" in reference manual #​35901
  • Document that SpringExtension requires JUnit Jupiter 6.0 or higher #​35900
  • Fix broken Javadoc links to methods #​35899
  • Clarify JMS sessionTransacted flag for local versus global transaction #​35897
  • Reference docs should not use obsolete "junit5" links #​35892
  • Testing chapter references nonexistent Dependency Management documentation #​35890
  • Wrong interface in WebFlux Documentation page for API Version #​35887
  • Update reference documentation to use Jackson 3 #​35886

🔨 Dependency Upgrades

❤️ Contributors

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

@​JohnNiang, @​Pankraz76, @​florianhof, @​ivonaest, @​izeye, @​jnizet, @​ngocnhan-tran1996, @​remeio, and @​zamzterz

v7.0.1

⭐ New Features

  • Align RestOperations Kotlin extensions nullability with Java one #​35852
  • Add resetCaches() method to Caffeine/ConcurrentMapCacheManager #​35840
  • Fix single-check idiom in UnmodifiableMultiValueMap #​35822
  • Fix Spliterator characteristics in ConcurrentReferenceHashMap #​35817
  • RestTestClient does not configure JsonPathAssertions in the same way as WebTestClient #​35793

🐞 Bug Fixes

  • Fix JdbcOperations Kotlin extensions #​35846
  • Fix getCacheNames() concurrent access in NoOpCacheManager #​35842
  • Annotation discovery regression for interfaces extending BeanNameAware and co. #​35835
  • MissingPathVariableException produces wrong status code in ProblemDetail #​35829
  • Refine ParameterizedPreparedStatementSetter nullability #​35749
  • Fix HtmlUtils unescape for supplementary chars #​35477

📔 Documentation

  • Fix cross-reference links in HtmlUnit sections #​35853
  • Remove @see Javadoc references to deprecated PropertiesBeanDefinitionReader #​35836
  • Replace kotlin-issues attribute reference #​35820
  • Document semantics and behavior of SpringExtension.getApplicationContext() #​35764

❤️ Contributors

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

@​juntae6942, @​kilink, @​ngocnhan-tran1996, and @​quaff

v7.0.0

🍃 Please read the official release notes and upgrade guide

⭐ New Features

  • Make SessionHolder publicly accessible for external resource management #​35799
  • RouterFunctions Builders do not support ServerResponse subtypes #​35791
  • Configure Jackson CBOR codecs by default if present #​35787
  • Rename maxAttempts to maxRetries in @Retryable and RetryPolicy #​35772
  • Prevent Kotlin Serialization side effects #​35761
  • Add default API version to the list of supported versions #​35755
  • Improve user check in TransportHandlingSockJsService #​35753
  • Update ApiVersionDeprecationHandler to provide access to handler #​35750
  • Use dedicated classes for ApiVersionResolver implementations #​35747
  • Provide AOT support for @Nested classes in a @ParameterizedClass #​35744
  • AssertJ support for WebTestClient #​35737
  • Reject attempt to use @MockitoSpyBean with a scoped proxy #​35722
  • Provide a way to supply the client builder for an HttpServiceGroup #​35707
  • Review HttpMessageConverters.Builder to improve readability of code using the API #​35704
  • Configure custom Kotlin Serialization converter on HttpMessageConverters #​35733

🐞 Bug Fixes

  • Missing support for UnprocessableContent in WebClientResponseException.create(HttpStatusCode, ..) methods #​35802
  • Relax media type checks in HttpMessageConverters #​35801
  • Fix HttpHeaders and WebSocketHttpHeaders interop issues #​35792
  • @ConcurrencyLimit weird behavior when combined with @Async and @Transactional #​35788
  • buildSrc:test failing on JDKs before JDK 25 #​35777
  • Add jar validation and fix multi-release jar #​35768
  • Upgrade to JUnit 6.0.1 and prevent AOT test scanning failure for JUnit 4 tests #​35740
  • Fix port handling in HtmlUnitRequestBuilder #​35709
  • RestTestClient.mutate() should not have side effects #​35698

📔 Documentation

  • Document workaround for @PersistenceContext and @PersistenceUnit in test classes in AOT #​31442

🔨 Dependency Upgrades

❤️ Contributors

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

@​Sineaggi and @​UpStreamThomas


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "after 10pm every weekday,before 5am every weekday,every weekend"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot requested review from fudler and l-1squared November 15, 2025 07:01
@renovate renovate Bot force-pushed the renovate/major-spring-core branch 3 times, most recently from e8f871e to 8bb2a4f Compare November 22, 2025 08:29
@renovate renovate Bot force-pushed the renovate/major-spring-core branch 2 times, most recently from 1eba076 to b38dcbc Compare December 13, 2025 16:46
@renovate renovate Bot force-pushed the renovate/major-spring-core branch from b38dcbc to 5da297b Compare December 30, 2025 14:56
@renovate renovate Bot force-pushed the renovate/major-spring-core branch 2 times, most recently from f1b1248 to e789932 Compare January 19, 2026 14:51
@renovate renovate Bot force-pushed the renovate/major-spring-core branch from e789932 to 2b8e048 Compare February 2, 2026 18:36
@renovate renovate Bot force-pushed the renovate/major-spring-core branch 2 times, most recently from 3a6f778 to f5e7b87 Compare February 18, 2026 14:59
@renovate renovate Bot force-pushed the renovate/major-spring-core branch 3 times, most recently from 52211ea to 3f14118 Compare March 16, 2026 04:54
@renovate renovate Bot force-pushed the renovate/major-spring-core branch 2 times, most recently from 68b30c9 to 304a96b Compare April 1, 2026 20:09
@renovate renovate Bot force-pushed the renovate/major-spring-core branch from 304a96b to ade909e Compare April 8, 2026 19:32
@renovate
Copy link
Copy Markdown
Contributor Author

renovate Bot commented Apr 10, 2026

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@l-1squared
Copy link
Copy Markdown
Collaborator

make sure that junit5 is just a wrapper around junit 6

@l-1squared l-1squared force-pushed the renovate/major-spring-core branch 2 times, most recently from afb1c40 to e0ebfb2 Compare April 24, 2026 13:04
Signed-off-by: Renovate Bot <bot@renovateapp.com>
@l-1squared l-1squared force-pushed the renovate/major-spring-core branch 2 times, most recently from 960b7bb to 8e9d1de Compare May 8, 2026 12:04
@l-1squared l-1squared requested a review from Copilot May 8, 2026 12:10
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR upgrades Spring dependencies to Spring Framework 7.x and introduces new “junit6” companion modules to keep JGiven compatible with both JUnit 5 and JUnit 6, while deprecating the older junit5/spring-junit5 modules and updating CI to build against multiple JUnit versions.

Changes:

  • Upgrade Spring dependencies by splitting Spring 6 vs Spring 7 coordinates in the version catalog.
  • Add jgiven-junit6 and jgiven-spring-junit6 modules and deprecate jgiven-junit5 / jgiven-spring-junit5 APIs in favor of the new modules.
  • Update GitHub Actions workflow matrix to run builds against multiple JUnit 5 and JUnit 6 versions.

Reviewed changes

Copilot reviewed 78 out of 79 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
settings.gradle Includes new junit6 modules
jgiven-tests/src/test/java/com/tngtech/jgiven/junit5/JUnit5ExecutorTest.java Switches scenario fixture used
jgiven-tests/src/test/java/com/tngtech/jgiven/GivenScenarioTest.java Renames scenario helper to junit6
jgiven-tests/src/main/java/com/tngtech/jgiven/tests/TestScenarioRepository.java Points repo fixture to JUnit6 test class
jgiven-tests/src/main/java/com/tngtech/jgiven/tests/JUnit6AfterMethodTests.java Adds JUnit6 after-each modification test
jgiven-tests/src/main/java/com/tngtech/jgiven/tests/JGivenReportExtractingExtension.java Uses junit6 extension import
jgiven-tests/build.gradle.kts Depends on jgiven-junit6
jgiven-spring/build.gradle.kts Uses Spring 6 test bundle
jgiven-spring-junit6/src/test/resources/jgiven-spring.xml Adds Spring test XML for junit6 module
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/TestBean.java Adds Spring test bean
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/SpringScenarioWithParameterizedTest.java Adds parameterized Spring scenario test
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/SpringRuleScenarioTestTest.java Adds Spring scenario test
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/SpringRuleFreshInstanceForEachTestTest.java Adds per-test fresh instance verification
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/SimpleTestSpringSteps.java Adds Spring stage class for tests
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/SimpleSpringRuleScenarioTestTest.java Adds simple Spring scenario test
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/WhenTestStage.java Adds proxy test stage (when)
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/ThenTestStage.java Adds proxy test stage (then)
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/ThenNewInstanceStage.java Adds new-instance assertion stage
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/SpringTransactionalTest.java Adds transactional proxy test
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/SpringProxyTest.java Adds Spring proxy wiring test
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/ProxyTestConfig.java Adds proxy test Spring config
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/MessageToTheWorld.java Adds proxy test model
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/HelloWorldService.java Adds proxy test service
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/GivenTestStageWithTransactional.java Adds transactional given stage
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/proxy/GivenTestStage.java Adds given stage for proxy tests
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/test/AdditionalStageTest.java Adds additional stage injection tests
jgiven-spring-junit6/src/test/java/com/tngtech/jgiven/integration/spring/junit5/config/TestSpringConfig.java Adds Spring config for tests
jgiven-spring-junit6/src/main/java/com/tngtech/jgiven/integration/spring/junit5/SpringScenarioTest.java Adds Spring scenario base (3 stages)
jgiven-spring-junit6/src/main/java/com/tngtech/jgiven/integration/spring/junit5/SimpleSpringScenarioTest.java Adds Spring scenario base (1 stage)
jgiven-spring-junit6/src/main/java/com/tngtech/jgiven/integration/spring/junit5/DualSpringScenarioTest.java Adds Spring scenario base (2 stages)
jgiven-spring-junit6/build.gradle.kts New module build config
jgiven-spring-junit5/src/main/java/com/tngtech/jgiven/integration/spring/junit5/SpringScenarioTest.java Deprecates Spring junit5 base class
jgiven-spring-junit5/src/main/java/com/tngtech/jgiven/integration/spring/junit5/SimpleSpringScenarioTest.java Deprecates Spring junit5 simple base
jgiven-spring-junit5/src/main/java/com/tngtech/jgiven/integration/spring/junit5/DualSpringScenarioTest.java Deprecates Spring junit5 dual base
jgiven-spring-junit5/build.gradle.kts Updates description/JUnit BOM selection
jgiven-junit6/src/test/resources/junit-platform.properties Enables parallel execution in tests
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/WhenStage.java Adds junit6 test stage (when)
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/ThenStage.java Adds junit6 test stage (then)
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/TagTest.java Adds tag integration test
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/PendingTest.java Adds pending behavior tests
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/PendingOnClassTest.java Adds class-level pending test
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/ParameterizedTestTest.java Adds parameterized scenario tests
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/NestedTest.java Adds nested test coverage
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/JUnit6SimpleScenarioTest.java Adds simple scenario smoke test
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/JUnit6ScenarioTest.java Adds scenario smoke test
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/JUnit6NoScenarioTest.java Tests extension-only usage
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/JUnit6ExtensionTest.java Extension integration tests
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/GivenStage.java Adds junit6 test stage (given)
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/GeneralStage.java Adds generic stage for tests
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/DynamicTestTest.java Adds dynamic test factory coverage
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/DisabledTest.java Adds disabled-test regression coverage
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/configuration/TagConfigurationStage.java Adds tag config stage
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/configuration/JUnit6ExtensionWithJGivenConfigurationTest.java Tests custom tag configuration
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/configuration/JUnit6DefaultTagConfigurationTest.java Tests default tag configuration
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/configuration/CustomJUnit6TagConfiguration.java Adds custom JGiven config
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/concurrency/Stages.java Adds parallelization stages
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/concurrency/JUnit6InjectedParallelizationTest.java Adds injected parallelization test
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/concurrency/JUnit6InheritedParallelizationTest.java Adds inherited parallelization test
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/AssumptionsTest.java Adds assumption/abort handling tests
jgiven-junit6/src/test/java/com/tngtech/jgiven/junit6/test/AllDisabledTest.java Adds all-disabled regression test
jgiven-junit6/src/main/templates/SimpleScenarioTest.template Generalizes templates for module
jgiven-junit6/src/main/templates/ScenarioTest.template Generalizes templates for module
jgiven-junit6/src/main/java/com/tngtech/jgiven/junit6/SimpleScenarioTest.java Adds junit6 base class
jgiven-junit6/src/main/java/com/tngtech/jgiven/junit6/ScenarioTest.java Adds junit6 base class
jgiven-junit6/src/main/java/com/tngtech/jgiven/junit6/JGivenExtension.java Adds junit6 extension implementation
jgiven-junit6/src/main/java/com/tngtech/jgiven/junit6/DualScenarioTest.java Adds junit6 dual base class
jgiven-junit6/src/main/java/com/tngtech/jgiven/junit6/ArgumentReflectionUtil.java Adds junit6 argument extraction
jgiven-junit6/build.gradle.kts New module build + codegen
jgiven-junit5/src/main/java/com/tngtech/jgiven/junit5/SimpleScenarioTest.java Deprecates, forwards to junit6
jgiven-junit5/src/main/java/com/tngtech/jgiven/junit5/ScenarioTest.java Deprecates, forwards to junit6
jgiven-junit5/src/main/java/com/tngtech/jgiven/junit5/JGivenExtension.java Deprecates, forwards to junit6
jgiven-junit5/src/main/java/com/tngtech/jgiven/junit5/DualScenarioTest.java Deprecates, forwards to junit6
jgiven-junit5/build.gradle.kts Deprecation + dependency changes
jgiven-future-java-tests/src/test/java/com/tngtech/jgiven/tests/sealed/SealedClassesHandlingTest.java Switches tests to junit6
jgiven-future-java-tests/build.gradle.kts Uses jgiven-junit6
gradle/libs.versions.toml Adds Spring 7 + JUnit 5/6 versions
CHANGELOG.md Documents deprecations/new modules
build.gradle Removes old junitVersion override
.github/workflows/jgiven_branch_and_pr_build.yml Splits CI jobs for JUnit 5/6

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 12 to 18
api(project(":jgiven-junit5"))

if (rootProject.hasProperty("junitVersion")) {
implementation(platform("org.junit:junit-bom:${rootProject.property("junitVersion")}"))
if (rootProject.hasProperty("junit6Version")) {
implementation(platform("org.junit:junit-bom:${rootProject.property("junit6Version")}"))
} else {
implementation(platform(libs.junit.bom))
}
Comment thread jgiven-junit6/src/main/java/com/tngtech/jgiven/junit6/JGivenExtension.java Outdated
Comment on lines +25 to 27
- name: Build with Gradle and JUnit 5 ${{ matrix.junit5 }}
run: "./gradlew -i -s check -Pjunit5Version=${{ matrix.junit5 }}"
- name: Run Jacoco
Comment thread settings.gradle
Comment thread gradle/libs.versions.toml
@l-1squared l-1squared force-pushed the renovate/major-spring-core branch from 8e9d1de to 1a7c0e0 Compare May 8, 2026 13:09
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 57 out of 58 changed files in this pull request and generated 11 comments.

Comment on lines +20 to +22
void some_action_with_a_parameter(String s) {
someResult = "s";
}
Comment on lines +24 to +28
* This extension enables JGiven for JUnit 5 Tests.
* <p>
* Just annotate your test class with {@code @ExtendWith( JGivenExtension.class )}
* <p>
* You can then inject stage classes by using the {@see ScenarioStage} annotation
}
if (isAssumptionException(exception.get())) {
scenario.getExecutor().aborted(exception.get());
} else if (!isAssumptionException(exception.get())) {
Comment thread .github/workflows/jgiven_branch_and_pr_build.yml
Comment thread jgiven-spring-junit5/build.gradle.kts Outdated
Comment on lines 14 to 18
if (rootProject.hasProperty("junit6Version")) {
implementation(platform("org.junit:junit-bom:${rootProject.property("junit6Version")}"))
} else {
implementation(platform(libs.junit.bom))
}
Comment on lines +65 to +68
return Stream.of(
Arguments.of(null, "World"),
Arguments.of("Hello", "World")//,
);
public class JUnit6SimpleScenarioTest extends SimpleScenarioTest<GeneralStage> {

@Test
public void JGiven_works_with_JUnit6_FOO_BAR() {
public class JUnit6ScenarioTest extends ScenarioTest<GivenStage, WhenStage, ThenStage> {

@Test
public void JGiven_works_with_JUnit6_DISABLED() {
Comment on lines +9 to +11

<context:component-scan base-package="com.tngtech.jgiven.integration.spring.junit5.test" />
<jgiven:annotation-driven/>
Comment on lines +8 to +20
description = "Module for using Spring dependency injection together with JGiven and JUnit 6/5"

dependencies {
api(project(":jgiven-spring"))
api(project(":jgiven-junit6"))


if (rootProject.hasProperty("junit6Version")) {
implementation(platform("org.junit:junit-bom:${rootProject.property("junit6Version")}"))
} else {
implementation(platform(libs.junit.bom))
}

@l-1squared l-1squared force-pushed the renovate/major-spring-core branch from fa490c8 to 7da7ef8 Compare May 8, 2026 14:23
Signed-off-by: l-1squared <30831153+l-1squared@users.noreply.github.com>
@l-1squared l-1squared force-pushed the renovate/major-spring-core branch from 7da7ef8 to 78f279f Compare May 12, 2026 11:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants