Skip to content

Upgrade to Spring Boot 4.0.5 and Spring Framework 7.0.6#15541

Open
jamesfredley wants to merge 22 commits into8.0.xfrom
spring-boot-4
Open

Upgrade to Spring Boot 4.0.5 and Spring Framework 7.0.6#15541
jamesfredley wants to merge 22 commits into8.0.xfrom
spring-boot-4

Conversation

@jamesfredley
Copy link
Copy Markdown
Contributor

Summary

This PR upgrades Grails Core to Spring Boot 4.0.5 and Spring Framework 7.0.6, bringing major framework updates and compatibility fixes.

This PR uses Groovy 4.0.x and Hibernate 5.6-jakarta, since work on Groovy 5 and Hibernate 7.2 is progressing on other branches.

This is the minimum amount required for Grails to run on Spring Boot 4 and Hibernate 5.6-jakarta

Includes merge from 8.0.x branch (7.0.x/7.1.x merge-ups, PluginDiscovery system, deprecations, new grails-testing-support-http-client module, @CompileStatic tag lib support, DatabaseCleanup annotation inheritance, functional test migrations)

Key Changes

  • Upgrade Spring Boot from 3.5.x to 4.0.5
  • Upgrade Spring Framework from 6.2.x to 7.0.6
  • Update all affected module imports and APIs for compatibility
  • Add vendored Spring ORM code for removed Hibernate 5 integration classes (Spring 7 dropped Hibernate 5 support)
  • Remove Spring theme/JSP support (deprecated in Grails 7.1, see Deprecate Spring JSP theme support for removal in Grails 8.0.0 #15457)
  • Update MongoDB properties from spring.data.mongodb.* to spring.mongodb.* (Spring Boot 4 migration)

Detailed Change Inventory

Category Change Files
Vendored Spring ORM code Spring 7 removed Hibernate 5 ORM integration classes. Vendored HibernateTemplate, HibernateTransactionManager, HibernateOperations, LocalSessionFactoryBean, LocalSessionFactoryBuilder, SessionFactoryUtils, SessionHolder, etc. into grails-data-hibernate5 16 new files in grails-data-hibernate5/core/src/main/java/.../hibernate5/
Theme/JSP support removed Spring 7 removed theme support from DispatcherServlet. Rather than vendoring, theme/JSP support was deprecated in Grails 7.1 and removed here (#15457) GspAutoConfiguration, GrailsApplicationContext, GrailsWebApplicationContext, AbstractGrailsTagTests, related test files
Package relocations Updated imports for 6 autoconfigure classes that moved in Spring Boot 4 ApplicationClassInjector, GrailsApplicationCompilerAutoConfiguration, ControllersAutoConfiguration, GrailsFilters, MongoDbGormAutoConfiguration
MongoDB property renames spring.data.mongodb.* to spring.mongodb.* application.yml, StartMongoGrailsIntegrationExtension, MongoDB test specs
Removed API replacements SecurityProperties.DEFAULT_FILTER_ORDER replaced with hardcoded -100; AnnotationConfigServletWebApplicationContext replaced with GenericWebApplicationContext; MappedInterceptor.matches(String,PathMatcher) replaced with matches(HttpServletRequest) GrailsFilters, GrailsApplicationBuilder, UrlMappingsHandlerMapping
Constructor signature changes DefaultTransactionStatus now requires 8 params (added transactionName and nested) TransactionalTransformSpec
Deprecated method removal HandlerAdapter.getLastModified() removed from interface UrlMappingsInfoHandlerAdapter
LoaderImplementation removed LoaderImplementation enum removed in Spring Boot 4; related configuration removed GrailsGradlePlugin, boot-plugin configurations
Test support updates MockApplicationContext added getBeanProvider(ParameterizedTypeReference); AbstractGrailsTagTests added static constants for removed theme attributes MockApplicationContext.java, AbstractGrailsTagTests

Breaking Changes in Spring Boot 4 / Spring Framework 7

Package Relocations (Spring Boot 4)

Spring Boot 4 restructured its autoconfigure modules. The following classes moved:

Class Old Package New Package
DataSourceAutoConfiguration org.springframework.boot.autoconfigure.jdbc org.springframework.boot.jdbc.autoconfigure
ReactorAutoConfiguration org.springframework.boot.autoconfigure.reactor org.springframework.boot.reactor.autoconfigure
HibernateJpaAutoConfiguration org.springframework.boot.autoconfigure.orm.jpa org.springframework.boot.hibernate.autoconfigure
MongoAutoConfiguration org.springframework.boot.autoconfigure.mongo org.springframework.boot.mongodb.autoconfigure
AnnotationConfigServletWebServerApplicationContext org.springframework.boot.web.servlet.context org.springframework.boot.web.server.servlet.context
BootstrapRegistry org.springframework.boot org.springframework.boot.bootstrap
BootstrapRegistryInitializer org.springframework.boot org.springframework.boot.bootstrap
ConfigurableBootstrapContext org.springframework.boot org.springframework.boot.bootstrap

Property Renames (Spring Boot 4)

Old Property New Property
spring.data.mongodb.host spring.mongodb.host
spring.data.mongodb.port spring.mongodb.port
spring.data.mongodb.uri spring.mongodb.uri
spring.data.mongodb.database spring.mongodb.database

Removed APIs

Removed Replacement/Fix
SecurityProperties.DEFAULT_FILTER_ORDER Hardcoded value -100 in GrailsFilters
AnnotationConfigServletWebApplicationContext Use GenericWebApplicationContext for testing
DispatcherServlet theme support Removed from Grails (deprecated in 7.1, see #15457)
MappedInterceptor.matches(String, PathMatcher) Use matches(HttpServletRequest)
HandlerAdapter.getLastModified() Method deprecated (removed from interface)
Spring ORM Hibernate 5 integration classes Vendored into grails-data-hibernate5
LoaderImplementation enum Removed from Spring Boot 4; related Grails configuration removed

spring.factories Key Changes (Spring Boot 4)

Old Key New Key
org.springframework.boot.BootstrapRegistryInitializer org.springframework.boot.bootstrap.BootstrapRegistryInitializer

Constructor Changes (Spring Framework 7)

  • DefaultTransactionStatus now requires 8 parameters (added transactionName and nested)

Workarounds

Workaround Reason Impact
Vendored Spring Hibernate 5 ORM classes into grails-data-hibernate5 Spring 7 removed Hibernate 5 integration Required only for the Hibernate 5.6-jakarta path. Goes away when apps migrate to Hibernate 7.2
Hardcoded DEFAULT_FILTER_ORDER = -100 in GrailsFilters SecurityProperties.DEFAULT_FILTER_ORDER removed Fragile if Spring Security changes the default. Should use Spring Security's constant when security plugin is updated

Files Changed

Core Module Updates

  • ApplicationClassInjector.groovy - Updated excluded auto-configuration class paths
  • GrailsApplicationCompilerAutoConfiguration.java - Updated DataSourceAutoConfiguration path
  • ControllersAutoConfiguration.java - Import reorganization for new packages
  • GrailsFilters.java - Removed SecurityProperties dependency, added DEFAULT_FILTER_ORDER constant
  • GrailsGradlePlugin.groovy - Removed LoaderImplementation references
  • GrailsEnvironmentPostProcessor.java - Updated bootstrap API imports for Spring Boot 4 package relocation
  • GrailsBootstrapRegistryInitializer.java - Updated bootstrap API imports for Spring Boot 4 package relocation
  • spring.factories - Updated BootstrapRegistryInitializer key for Spring Boot 4 package relocation

GSP / Theme Removal

  • GspAutoConfiguration.java - Removed theme resolver configuration
  • GrailsApplicationContext.java - Removed ThemeSource field, onRefresh(), getTheme()
  • GrailsWebApplicationContext.java - Removed ThemeSource import and interface (removed in Spring Framework 7)
  • Theme/JSP support removed per Deprecate Spring JSP theme support for removal in Grails 8.0.0 #15457 (deprecated in Grails 7.1)

Testing Support

  • GrailsApplicationBuilder.groovy - Use GenericWebApplicationContext instead of AnnotationConfigServletWebApplicationContext; integrated 8.0.x PluginDiscovery system
  • MockApplicationContext.java - Added getBeanProvider(ParameterizedTypeReference) method
  • AbstractGrailsTagTests.groovy - Added static constants for removed theme attributes
  • TransactionalTransformSpec.groovy - Updated DefaultTransactionStatus constructor calls
  • DefaultUrlCreatorTests.groovy - Fixed ambiguous method overloading for setCharacterEncoding

URL Mappings

  • UrlMappingsHandlerMapping.groovy - Updated MappedInterceptor.matches() call signature
  • UrlMappingsInfoHandlerAdapter.groovy - Deprecated getLastModified() method

MongoDB Support

  • MongoDbGormAutoConfiguration.groovy - Updated MongoAutoConfiguration import path
  • MongoDbGormAutoConfigurationSpec.groovy - Updated property names for Spring Boot 4
  • MongoDbGormAutoConfigureWithGeoSpacialSpec.groovy - Updated property names for Spring Boot 4
  • StartMongoGrailsIntegrationExtension.groovy - Updated spring.mongodb.uri property
  • mongodb/base/application.yml - Updated spring.mongodb.host/port properties

Build Configuration

  • grails-data-hibernate5/boot-plugin/build.gradle - Added spring-boot-jdbc and spring-boot-hibernate test dependencies
  • grails-test-examples/hibernate5/spring-boot-hibernate/build.gradle - Added spring-boot-hibernate for package relocation

Test Status

CI Build Status

All CI test suites pass when Apache repository (repository.apache.org) is reachable:

  • Core tests (./gradlew build -PonlyCoreTests)
  • Functional tests (./gradlew build -PonlyFunctionalTests)
  • Hibernate5 tests (./gradlew build -PonlyHibernate5Tests)
  • MongoDB tests (./gradlew build -PonlyMongodbTests)

Note: Some CI runs may fail due to transient connectivity issues with repository.apache.org (37.27.138.133). These are infrastructure issues, not test failures.

Known Build Issues (WIP)

  • ApplicationClassInjectorSpec - test expects old autoconfigure package path

Disabled Tests (External Plugin Incompatibilities)

The following test modules have their integrationTest task disabled at the build level, since the Spring Security auto-configuration failure prevents the ApplicationContext from loading (cascading to all tests in the module):

Module Plugin/Library Root Cause Action Needed
app1 Spring Security 7.0.1-SNAPSHOT ReflectionUtils.getApplication() removed in Spring Boot 4 Update grails-spring-security plugin
app3 Spring Security Same as above Same
exploded Spring Security Same as above Same
plugins/exploded Spring Security Same as above Same
mongodb/test-data-service Spring Security Same as above Same
gsp-sitemesh3 SiteMesh3 Decorator/layout not compatible with Spring Framework 7 Update SiteMesh3 integration

Additionally, the following individual tests are disabled:

Test Reason
gsp-layout/GrailsLayoutSpec."jsp demo" JSP/theme support removed in Spring Framework 7 (see #15457)
issue-views-182/CustomErrorSpec JSON Views error handling response times out
RenderMethodTests.testRenderFile (@PendingFeature) MockHttpServletResponse behavior changed in Spring Framework 7

Open Decisions

Decision Context Options
SiteMesh3 SiteMesh3 is incompatible with Spring 7 (a) Request update to SiteMesh3, (b) Replace with Grails-native layout mechanism
Micronaut Spring Current micronautPlatformVersion=4.9.2 pulls Micronaut Spring 5.x (targets Spring Boot 3.x) (a) Pin micronaut-spring-boot-starter:6.0.0-M1 for Spring Boot 4 compat, (b) Wait for Micronaut 5 stable release

Remaining Work

  • Update ApplicationClassInjectorSpec for new autoconfigure package paths
  • Update grails-spring-security plugin for ReflectionUtils.getApplication() removal
  • Fix SiteMesh3 decorator integration for Spring Framework 7
  • Address JSON Views error handling timeout
  • Rework Bean Builder - Spring 7 drops XML configuration support (Spring 7 - XML configuration no longer supported #14915); the current BeanBuilder is backed by XML; needs programmatic bean registration
  • Evaluate Micronaut Spring 6.0.0-M1 for Spring Boot 4 Micronaut integration

Action Required

The following external plugins/libraries need updates for full Spring Boot 4 compatibility:

  1. grails-spring-security - Update ReflectionUtils for Spring Boot 4 API changes
  2. SiteMesh3 - Update decorator integration for Spring Framework 7

jamesfredley and others added 20 commits January 21, 2026 14:32
# Conflicts:
#	dependencies.gradle
#	grails-data-hibernate5/grails-plugin/src/main/groovy/org/grails/plugin/hibernate/support/GrailsOpenSessionInViewInterceptor.java
#	grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigurationSpec.groovy
#	grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigureWithGeoSpacialSpec.groovy
The 8.0.x merge reintroduced several items that had been removed or
updated for Spring Boot 4 compatibility:

- Remove vendored Spring theme files (10 files) already removed by #15457
- Remove theme references from GrailsApplicationContext (ThemeSource,
  onRefresh, getTheme)
- Remove LoaderImplementation import and CLASSIC loader convention from
  GrailsGradlePlugin (removed in Spring Boot 4)
- Add missing SessionFactoryUtils vendored import in
  GrailsOpenSessionInViewInterceptor
- Add spring-boot-hibernate dependency for HibernateJpaAutoConfiguration
  package relocation in test example

Assisted-by: Claude Code <Claude@Claude.ai>
ThemeSource (org.springframework.ui.context.ThemeSource) was removed in
Spring Framework 7.0. GrailsWebApplicationContext imported and implemented
this interface, causing grails-web-core compilation failure and cascading
all downstream CI jobs.

Assisted-by: Claude Code <Claude@Claude.ai>
Sort org.springframework imports alphabetically before the grails/org.grails
group to satisfy checkstyle ImportOrder rule.

Assisted-by: Claude Code <Claude@Claude.ai>
- Update ApplicationClassInjectorSpec to expect relocated
  HibernateJpaAutoConfiguration class
- Use forked SessionHolder in MultiDataSourceSessionSpec
- Add missing RestoreSystemProperties import in MongoDB specs
- Remove Spring Theme/ThemeSource references deleted in Spring 7
- Add spring-boot-jdbc test dependency for DataSourceAutoConfiguration

Assisted-by: Claude Code <Claude@Claude.ai>
Checkstyle requires explicit imports per AvoidStarImport rule.

Assisted-by: Claude Code <Claude@Claude.ai>
- Remove unused imports (ObjectProvider, UrlMappings) in
  UrlMappingsAutoConfiguration to fix checkstyle
- Add spring-boot-hibernate test dependency to grails-data-hibernate5
  boot-plugin for relocated HibernateJpaAutoConfiguration class
- Update spring.data.mongodb.* to spring.mongodb.* in MongoDB boot-plugin
  test specs (property renamed in Spring Boot 4)
- Disable integrationTest for modules using grails-spring-security
  (app1, app3, exploded, plugins/exploded, mongodb/test-data-service)
  until plugin is updated for Spring Boot 4
- Disable integrationTest for gsp-sitemesh3 (SiteMesh3 incompatible
  with Spring Framework 7)
- Ignore JSP test in gsp-layout (JSP/theme support removed in Spring
  Framework 7, see #15457)
- Disable groovydoc for micronaut-singleton test plugin to avoid Groovy
  version conflict (4.0.29 vs 4.0.30 from Micronaut platform)

Assisted-by: Claude Code <Claude@Claude.ai>
Adapt AbstractGrailsMockHttpServletResponse to Spring 7 changes in
MockHttpServletResponse and restore the previous reset() behavior.
# Conflicts:
#	grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsApplicationBuilder.groovy
#	grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy
Spring Boot 4.0 moved BootstrapRegistry, BootstrapRegistryInitializer, and
ConfigurableBootstrapContext from org.springframework.boot to
org.springframework.boot.bootstrap. Update all references and the
spring.factories key to use the new package paths.

Assisted-by: Claude Code <Claude@Claude.ai>
…elocations

DataSourceAutoConfiguration moved from org.springframework.boot.autoconfigure.jdbc
to org.springframework.boot.jdbc.autoconfigure and ReactorAutoConfiguration moved
from org.springframework.boot.autoconfigure.reactor to
org.springframework.boot.reactor.autoconfigure. Update both the source constant
and the test expectations.

Assisted-by: Claude Code <Claude@Claude.ai>
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

Upgrades Grails Core to Spring Boot 4.0.5 / Spring Framework 7.0.6 and applies the required compatibility changes across core, web, testing, MongoDB, and Hibernate 5.6-jakarta integration (including vendoring removed Spring ORM Hibernate 5 support).

Changes:

  • Update build/dependency coordinates, Spring Boot 4 package relocations, and related API migrations (bootstrapping, web server, MVC, MongoDB properties, etc.).
  • Remove Spring theme/JSP/theme infrastructure (now removed upstream) and adjust affected tests.
  • Vendor Spring ORM Hibernate 5 integration classes into grails-data-hibernate5 to preserve Hibernate 5.6-jakarta support under Spring Framework 7.

Reviewed changes

Copilot reviewed 134 out of 135 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
grails-wrapper/build.gradle Switch JUnit Platform dependency from runner to suite.
grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlCreatorTests.groovy Update request character encoding call to avoid ambiguity.
grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/servlet/UrlMappingsErrorPageCustomizer.groovy Update Spring Boot 4 import relocations for error-page customization.
grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsInfoHandlerAdapter.groovy Remove obsolete @Override for removed Spring MVC API.
grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMapping.groovy Update interceptor matching to new Spring MVC API.
grails-web-url-mappings/src/main/groovy/grails/web/mapping/ResponseRedirector.groovy Replace removed/deprecated status constant with FOUND (302).
grails-web-url-mappings/build.gradle Add Boot modularized web-server/servlet compileOnly deps; update JUnit Platform dependency.
grails-web-mvc/build.gradle Update JUnit Platform dependency to suite.
grails-web-databinding/build.gradle Update JUnit Platform dependency to suite.
grails-web-core/src/main/groovy/grails/web/servlet/context/GrailsWebApplicationContext.java Remove Spring theme support interface/notes.
grails-web-core/build.gradle Update JUnit Platform dependency to suite.
grails-web-common/src/main/groovy/org/grails/web/config/http/GrailsFilters.java Replace removed Boot SecurityProperties constant usage with internal constant.
grails-web-common/src/main/groovy/org/grails/web/config/http/GrailsFilterOrder.java Introduce internal filter-order constant for Boot 4 migration.
grails-web-common/build.gradle Update JUnit Platform dependency to suite.
grails-web-boot/src/test/groovy/grails/boot/GrailsSpringApplicationSpec.groovy Ignore embedded server spec pending Boot 4 modularization rework.
grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy Ignore embedded container spec pending Boot 4 modularization rework.
grails-web-boot/build.gradle Update JUnit Platform dependency to suite.
grails-validation/build.gradle Update JUnit Platform dependency to suite.
grails-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsAutoConfiguration.java Simplify error page customizer bean definition for Boot 4 changes.
grails-url-mappings/build.gradle Add Boot servlet API dependency; update JUnit Platform dependency.
grails-testing-support-mongodb/build.gradle Update Testcontainers MongoDB dependency coordinate.
grails-testing-support-datamapping/build.gradle Update JUnit Platform exclusion to suite.
grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsApplicationBuilder.groovy Replace removed Boot servlet app context class; manual annotation processor registration.
grails-testing-support-core/build.gradle Add spring-webmvc; update JUnit Platform dependency to suite.
grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/RenderMethodTests.groovy Modernize/rename Spock tests; improve assertions/messages.
grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodTests.groovy Update assertion text/status constant to FOUND (302).
grails-test-suite-persistence/build.gradle Update JUnit Platform dependency to suite.
grails-test-suite-base/src/main/groovy/org/grails/support/MockApplicationContext.java Add getBeanProvider(ParameterizedTypeReference) to match updated Spring APIs.
grails-test-suite-base/build.gradle Update JUnit Platform dependency to suite.
grails-test-examples/plugins/micronaut-singleton/build.gradle Disable groovydoc task for example plugin.
grails-test-examples/plugins/exploded/build.gradle Disable integrationTest due to Spring Security incompatibility under Boot 4.
grails-test-examples/mongodb/test-data-service/build.gradle Update Testcontainers MongoDB dependency coordinate; disable integrationTest for security incompatibility.
grails-test-examples/hibernate5/spring-boot-hibernate/src/main/groovy/example/Application.groovy Update Boot package relocation for Hibernate JPA autoconfig exclusion.
grails-test-examples/hibernate5/spring-boot-hibernate/build.gradle Add Boot autoconfigure/hibernate compileOnly deps for relocation.
grails-test-examples/gsp-sitemesh3/build.gradle Disable integrationTest due to SiteMesh3 incompatibility with Spring 7.
grails-test-examples/gsp-layout/src/test/groovy/org/apache/grails/views/gsp/layout/AbstractGrailsTagTests.groovy Remove theme support usage; swap to GenericWebApplicationContext; reorder imports.
grails-test-examples/gsp-layout/src/integration-test/groovy/GrailsLayoutSpec.groovy Ignore JSP demo test now that JSP support is removed.
grails-test-examples/exploded/build.gradle Disable integrationTest due to Spring Security incompatibility under Boot 4.
grails-test-examples/app3/build.gradle Disable integrationTest due to Spring Security incompatibility under Boot 4.
grails-test-examples/app1/build.gradle Disable integrationTest due to Spring Security incompatibility under Boot 4.
grails-test-core/src/main/groovy/org/grails/plugins/testing/AbstractGrailsMockHttpServletResponse.groovy Adjust reset behavior for Spring mock response internal changes.
grails-test-core/build.gradle Update JUnit Platform dependency to suite.
grails-spring/src/main/groovy/org/grails/spring/GrailsApplicationContext.java Remove deprecated theme support methods/fields.
grails-spring/build.gradle Update JUnit Platform dependency; exclude vendored Spring UI classes from checkstyle.
grails-shell-cli/build.gradle Update JUnit Platform dependency to suite.
grails-services/build.gradle Update JUnit Platform dependency to suite.
grails-rest-transforms/build.gradle Update JUnit Platform dependency to suite.
grails-mimetypes/build.gradle Update JUnit Platform dependency to suite.
grails-logging/src/main/groovy/org/grails/compiler/logging/LoggingTransformer.java Replace Slf4j AST transformation usage with manual logger field injection.
grails-logging/build.gradle Update JUnit Platform dependency to suite.
grails-interceptors/build.gradle Update JUnit Platform dependency to suite.
grails-i18n/src/main/groovy/org/grails/plugins/i18n/I18nAutoConfiguration.java Update Boot package relocation for WebMvc autoconfiguration.
grails-i18n/build.gradle Add boot-webmvc compileOnly; update JUnit Platform dependency.
grails-gsp/spring-boot/src/main/java/grails/gsp/boot/GspAutoConfiguration.java Update Boot package relocation for WebMvc autoconfiguration.
grails-gsp/spring-boot/build.gradle Add boot-webmvc compileOnly dependency.
grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/AbstractGrailsTagTests.groovy Remove theme support usage; swap to GenericWebApplicationContext; reorder imports.
grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy Remove Boot loader implementation configuration (removed in Boot 4).
grails-gradle/model/build.gradle Update JUnit Platform dependency to suite.
grails-geb/build.gradle Update Selenium Testcontainers dependency coordinate.
grails-encoder/build.gradle Update JUnit Platform dependency to suite.
grails-domain-class/build.gradle Update JUnit Platform dependency to suite.
grails-datasource/build.gradle Update JUnit Platform dependency to suite.
grails-datamapping-rx/build.gradle Update JUnit Platform dependency to suite.
grails-datamapping-core/src/test/groovy/grails/gorm/annotation/transactions/TransactionalTransformSpec.groovy Update DefaultTransactionStatus constructor usage for Spring 7 signature.
grails-databinding/build.gradle Update JUnit Platform dependency to suite.
grails-databinding-core/build.gradle Update JUnit Platform dependency to suite.
grails-data-neo4j/build.gradle Update JUnit Platform dependency to suite.
grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigureWithGeoSpacialSpec.groovy Update Boot package relocation and MongoDB property keys.
grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigurationSpec.groovy Update Boot package relocation and MongoDB property keys.
grails-data-mongodb/boot-plugin/src/main/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfiguration.groovy Update Boot package relocation for Mongo auto-config/properties.
grails-data-mongodb/boot-plugin/build.gradle Add new Boot mongodb module dependency for relocated classes.
grails-data-hibernate5/grails-plugin/src/test/groovy/org/grails/plugin/hibernate/support/MultiDataSourceSessionSpec.groovy Switch imports to vendored SessionHolder.
grails-data-hibernate5/grails-plugin/src/main/groovy/org/grails/plugin/hibernate/support/HibernatePersistenceContextInterceptor.java Switch imports to vendored Spring ORM Hibernate 5 utilities.
grails-data-hibernate5/grails-plugin/src/main/groovy/org/grails/plugin/hibernate/support/GrailsOpenSessionInViewInterceptor.java Switch imports to vendored Spring ORM Hibernate 5 utilities/interceptor.
grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy Switch imports to vendored SessionHolder.
grails-data-hibernate5/core/src/test/groovy/org/apache/grails/data/hibernate5/core/GrailsDataHibernate5TckManager.groovy Switch imports to vendored SessionFactoryUtils/SessionHolder.
grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/WithNewSessionAndExistingTransactionSpec.groovy Switch imports to vendored SessionHolder.
grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/BeanValidationSpec.groovy Replace deprecated Hibernate validator annotation with Jakarta validation.
grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/HibernateOptimisticLockingSpec.groovy Switch imports to vendored optimistic locking exception.
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/support/OpenSessionInViewInterceptor.java Vendored Spring ORM OSIV interceptor (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/support/AsyncRequestInterceptor.java Vendored Spring ORM async request interceptor (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringSessionSynchronization.java Vendored Spring ORM transaction synchronization (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringSessionContext.java Vendored Spring ORM current session context (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringJtaSessionContext.java Vendored Spring ORM JTA session context (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringFlushSynchronization.java Vendored Spring ORM flush synchronization (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringBeanContainer.java Vendored Spring ORM bean container integration (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SessionHolder.java Vendored Spring ORM SessionHolder (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SessionFactoryUtils.java Vendored Spring ORM SessionFactoryUtils (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/LocalSessionFactoryBuilder.java Vendored Spring ORM SessionFactory builder (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/LocalSessionFactoryBean.java Vendored Spring ORM SessionFactory FactoryBean (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateTransactionManager.java Vendored Spring ORM HibernateTransactionManager (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateSystemException.java Vendored Spring ORM exception type (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateQueryException.java Vendored Spring ORM exception type (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateOptimisticLockingFailureException.java Vendored Spring ORM exception type (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateObjectRetrievalFailureException.java Vendored Spring ORM exception type (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateJdbcException.java Vendored Spring ORM exception type (Hibernate 5 support).
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateExceptionTranslator.java Vendored Spring ORM persistence exception translator.
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateCallback.java Vendored Spring ORM callback interface.
grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/ConfigurableJtaPlatform.java Vendored Spring ORM JTA platform adapter.
grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/HibernateMappingContextSessionFactoryBean.java Switch to vendored HibernateExceptionTranslator import.
grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy Switch to vendored SessionHolder import.
grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/GrailsSessionContext.java Switch to vendored Spring ORM session/flush synchronization types.
grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTransactionManager.groovy Switch to vendored HibernateTransactionManager/SessionHolder.
grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java Switch to vendored SessionFactoryUtils/SessionHolder.
grails-data-hibernate5/core/src/main/groovy/grails/orm/HibernateCriteriaBuilder.java Switch to vendored SessionHolder.
grails-data-hibernate5/core/build.gradle Add Spring Web deps; exclude vendored code from checkstyle.
grails-data-hibernate5/boot-plugin/src/test/groovy/org/grails/datastore/gorm/boot/autoconfigure/HibernateGormAutoConfigurationSpec.groovy Remove outdated Boot JDBC imports in spec.
grails-data-hibernate5/boot-plugin/src/main/groovy/org/grails/datastore/gorm/boot/autoconfigure/HibernateGormAutoConfiguration.groovy Update Boot package relocations for datasource/hibernate autoconfig.
grails-data-hibernate5/boot-plugin/build.gradle Add compile/test deps for relocated Boot JDBC/Hibernate modules.
grails-data-graphql/examples/spring-boot-app/src/main/groovy/com/example/demo/DemoApplication.groovy Update Boot package relocation for Hibernate JPA autoconfig exclusion.
grails-core/src/test/groovy/org/grails/compiler/injection/ApplicationClassInjectorSpec.groovy Update expected Boot autoconfiguration class names (new packages).
grails-core/src/test/groovy/grails/boot/config/GrailsEnvironmentPostProcessorSpec.groovy Update bootstrap API import relocation.
grails-core/src/main/resources/META-INF/spring.factories Update BootstrapRegistryInitializer key for Boot 4.
grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy Update excluded Boot autoconfiguration class list to new packages.
grails-core/src/main/groovy/org/apache/grails/core/GrailsBootstrapRegistryInitializer.java Update bootstrap API imports + Javadoc key reference.
grails-core/src/main/groovy/grails/config/external/ExternalConfigRunListener.groovy Update bootstrap API import relocation.
grails-core/src/main/groovy/grails/boot/GrailsApp.groovy Update WebServerApplicationContext import relocation.
grails-core/src/main/groovy/grails/boot/config/GrailsEnvironmentPostProcessor.java Update bootstrap API import relocation.
grails-core/build.gradle Add modularized spring-boot-web-server dependency; update JUnit Platform dependency.
grails-converters/build.gradle Update JUnit Platform dependency to suite.
grails-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersAutoConfiguration.java Update Boot package relocations for servlet/webmvc autoconfigure classes.
grails-controllers/build.gradle Add Boot webmvc/servlet modules; update JUnit Platform dependency.
grails-console/build.gradle Update JUnit Platform dependency to suite.
grails-common/build.gradle Update JUnit Platform dependency to suite.
grails-codecs/build.gradle Update JUnit Platform dependency to suite.
grails-codecs-core/build.gradle Update JUnit Platform dependency to suite.
grails-bootstrap/build.gradle Update JUnit Platform dependency to suite.
grails-bom/build.gradle Override Spring Boot groovy.version property to keep Groovy 4.0.x for Grails.
dependencies.gradle Upgrade Spring Boot version and Groovy version; add loader-tools to gradle BOM deps.
build.gradle Force Groovy 4.0.31 artifacts to override Spring Boot’s default Groovy 5.
build-logic/docs-core/build.gradle Update JUnit Platform dependency to suite.
AGENTS.md Update documented Spring Boot/Framework versions.
.agents/skills/grails-developer/SKILL.md Update skill documentation for new Spring Boot/Framework versions.

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

- Update vendored OpenSessionInViewInterceptor Javadoc @link and @see
  references to point to the vendored HibernateTransactionManager class
  instead of the removed org.springframework.orm.hibernate5 package
- Clarify GrailsFilterOrder Javadoc to state the concrete value (-100)
  and cite the original OrderedFilter.REQUEST_WRAPPER_FILTER_MAX_ORDER
  computation instead of referencing an undefined symbol
- Clean up GrailsSpringApplicationSpec and EmbeddedContainerWithGrailsSpec
  to remove commented-out code and placeholder assertions that would
  silently pass if re-enabled; tests now throw UnsupportedOperationException
  behind @ignore with TODO markers for Spring Boot 4.0 rework

Assisted-by: Claude Code <Claude@Claude.ai>
@testlens-app
Copy link
Copy Markdown

testlens-app bot commented Mar 31, 2026

✅ All tests passed ✅

🏷️ Commit: 0fd14cd
▶️ Tests: 18524 executed
⚪️ Checks: 35/35 completed


Learn more about TestLens at testlens.app.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants